@lokalise/fastify-bullboard-plugin 2.1.0 → 2.2.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.
package/README.md CHANGED
@@ -29,7 +29,7 @@ await app.register(basicAuth, {
29
29
  })
30
30
 
31
31
  await app.register(bullBoard, {
32
- queueConstructor: Queue, // can be QueuePro if bullmq-pro is used
32
+ queueConstructor: Queue,
33
33
  redisConfigs: [
34
34
  {
35
35
  host: process.env.REDIS_HOST!,
@@ -45,6 +45,43 @@ await app.register(bullBoard, {
45
45
  })
46
46
  ```
47
47
 
48
+ ## BullMQ Pro support
49
+
50
+ The plugin supports both standard BullMQ queues and BullMQ Pro queues, including mixing
51
+ the two in a single deployment. Mark each Redis connection that hosts Pro queues with
52
+ `isPro: true` and provide the `QueuePro` constructor via `queueProConstructor`. Queues
53
+ discovered on Pro connections are wrapped in `BullMQProAdapter`, surfacing group-aware
54
+ counts and listings in the dashboard.
55
+
56
+ ```ts
57
+ import { bullBoard } from '@lokalise/fastify-bullboard-plugin'
58
+ import { Queue } from 'bullmq'
59
+ import { QueuePro } from '@taskforcesh/bullmq-pro'
60
+
61
+ await app.register(bullBoard, {
62
+ queueConstructor: Queue,
63
+ queueProConstructor: QueuePro,
64
+ redisConfigs: [
65
+ // Standard BullMQ connection
66
+ {
67
+ host: process.env.REDIS_HOST!,
68
+ port: Number(process.env.REDIS_PORT),
69
+ },
70
+ // BullMQ Pro connection on the same deployment
71
+ {
72
+ host: process.env.REDIS_PRO_HOST!,
73
+ port: Number(process.env.REDIS_PRO_PORT),
74
+ isPro: true,
75
+ },
76
+ ],
77
+ basePath: '/bull',
78
+ })
79
+ ```
80
+
81
+ `queueConstructor` is required when any `redisConfigs` entry omits `isPro` (or sets it to `false`).
82
+ `queueProConstructor` is required when any entry sets `isPro: true`. Both may be supplied together
83
+ for mixed deployments.
84
+
48
85
  ## Compatibility with existing fastify plugins
49
86
 
50
87
  `@lokalise/fastify-bullboard-plugin/basicAuth` registers it own instance of `fastifyBasicAuth`, it will not work if you also have it installed in your fastify app.
@@ -1,14 +1,29 @@
1
+ import type { QueueProLike } from '@bull-board/api/bullMQProAdapter';
1
2
  import { type RedisConfig } from '@lokalise/node-core';
2
3
  import type { Queue, QueueOptions, RedisConnection } from 'bullmq';
4
+ export type BullBoardRedisConfig = RedisConfig & {
5
+ /**
6
+ * If true, queues discovered on this Redis connection are instantiated with
7
+ * `queueProConstructor` and wrapped in `BullMQProAdapter`, enabling
8
+ * group-aware counts and listings in the dashboard. Defaults to false.
9
+ */
10
+ isPro?: boolean;
11
+ };
3
12
  export type BullBoardOptions = {
4
- queueConstructor: QueueProConstructor | QueueConstructor;
13
+ /** Constructor for standard BullMQ queues, used for any `redisConfigs` entry without `isPro: true`. */
14
+ queueConstructor: QueueConstructor;
15
+ /**
16
+ * Constructor for BullMQ Pro queues (e.g. `QueuePro` from `@taskforcesh/bullmq-pro`).
17
+ * Required if any entry of `redisConfigs` has `isPro: true`.
18
+ */
19
+ queueProConstructor?: QueueProConstructor;
5
20
  basePath: string;
6
21
  assetsPath?: string;
7
22
  refreshIntervalInSeconds?: number;
8
- redisConfigs: RedisConfig[];
23
+ redisConfigs: BullBoardRedisConfig[];
9
24
  };
10
25
  export interface QueueProConstructor {
11
- new (name: string, opts?: Record<string, unknown>): Queue;
26
+ new (name: string, opts?: QueueOptions): QueueProLike;
12
27
  }
13
28
  export interface QueueConstructor {
14
29
  new (name: string, opts?: QueueOptions, Connection?: typeof RedisConnection): Queue;
package/dist/bullBoard.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { constants as httpConstants } from 'node:http2';
2
2
  import { createBullBoard } from '@bull-board/api';
3
3
  import { BullMQAdapter } from '@bull-board/api/bullMQAdapter';
4
+ import { BullMQProAdapter } from '@bull-board/api/bullMQProAdapter';
4
5
  import { FastifyAdapter } from '@bull-board/fastify';
5
6
  import fastifySchedule from '@fastify/schedule';
6
7
  import { backgroundJobProcessorGetActiveQueueIds, QUEUE_GROUP_DELIMITER, sanitizeRedisConfig, } from '@lokalise/background-jobs-common';
@@ -21,25 +22,44 @@ const bullBoardErrorHandler = (error) => {
21
22
  body: { message: error.message, details: error.stack },
22
23
  };
23
24
  };
24
- const getCurrentQueues = async (resolvedRedis, queueConstructor) => {
25
+ const validateConstructors = (pluginOptions) => {
26
+ const hasPro = pluginOptions.redisConfigs.some((c) => c.isPro);
27
+ if (hasPro && !pluginOptions.queueProConstructor) {
28
+ throw new Error('bull-board: queueProConstructor is required when redisConfigs contains entries with isPro: true');
29
+ }
30
+ };
31
+ const buildQueueForConfig = (id, resolved, pluginOptions) => {
32
+ const opts = { connection: resolved.sanitizedConfig, prefix: resolved.prefix };
33
+ if (resolved.isPro) {
34
+ // biome-ignore lint/style/noNonNullAssertion: validated by validateConstructors
35
+ const queue = new pluginOptions.queueProConstructor(id, opts);
36
+ return {
37
+ queue: queue,
38
+ adapter: new BullMQProAdapter(queue, { delimiter: QUEUE_GROUP_DELIMITER }),
39
+ };
40
+ }
41
+ const queue = new pluginOptions.queueConstructor(id, opts);
42
+ return { queue, adapter: new BullMQAdapter(queue, { delimiter: QUEUE_GROUP_DELIMITER }) };
43
+ };
44
+ const getCurrentQueues = async (resolvedRedis, pluginOptions) => {
25
45
  const queueIds = await Promise.all(resolvedRedis.map((e) => backgroundJobProcessorGetActiveQueueIds(e.redis)));
26
- const queues = queueIds.flatMap((ids, index) => ids.map((id) => {
46
+ const queues = [];
47
+ const queuesAdapter = [];
48
+ queueIds.forEach((ids, index) => {
27
49
  // biome-ignore lint/style/noNonNullAssertion: Should exist
28
- const redisConfig = resolvedRedis[index];
29
- return new queueConstructor(id, {
30
- connection: redisConfig.sanitizedConfig,
31
- prefix: redisConfig.prefix,
32
- });
33
- }));
34
- return {
35
- queues,
36
- queuesAdapter: queues.map((queue) => new BullMQAdapter(queue, { delimiter: QUEUE_GROUP_DELIMITER })),
37
- };
50
+ const resolved = resolvedRedis[index];
51
+ for (const id of ids) {
52
+ const { queue, adapter } = buildQueueForConfig(id, resolved, pluginOptions);
53
+ queues.push(queue);
54
+ queuesAdapter.push(adapter);
55
+ }
56
+ });
57
+ return { queues, queuesAdapter };
38
58
  };
39
59
  const replaceQueues = async (fastify, bullBoard, resolvedRedis, pluginOptions) => {
40
- const { refreshIntervalInSeconds, queueConstructor } = pluginOptions;
60
+ const { refreshIntervalInSeconds } = pluginOptions;
41
61
  fastify.log.debug({ refreshIntervalInSeconds }, 'Bull-dashboard -> updating queues');
42
- const { queues: newQueues, queuesAdapter } = await getCurrentQueues(resolvedRedis, queueConstructor);
62
+ const { queues: newQueues, queuesAdapter } = await getCurrentQueues(resolvedRedis, pluginOptions);
43
63
  bullBoard.replaceQueues(queuesAdapter);
44
64
  await Promise.all(currentQueues.map((queue) => queue.close()));
45
65
  currentQueues = newQueues;
@@ -61,11 +81,13 @@ const resolveRedis = (options) => options.redisConfigs.map((config) => ({
61
81
  redis: new Redis(config),
62
82
  sanitizedConfig: sanitizeRedisConfig(config),
63
83
  prefix: config.keyPrefix,
84
+ isPro: config.isPro === true,
64
85
  }));
65
86
  const plugin = async (fastify, pluginOptions) => {
66
- const { basePath, assetsPath, queueConstructor } = pluginOptions;
87
+ validateConstructors(pluginOptions);
88
+ const { basePath, assetsPath } = pluginOptions;
67
89
  const resolvedRedis = resolveRedis(pluginOptions);
68
- const { queues, queuesAdapter } = await getCurrentQueues(resolvedRedis, queueConstructor);
90
+ const { queues, queuesAdapter } = await getCurrentQueues(resolvedRedis, pluginOptions);
69
91
  currentQueues = queues;
70
92
  const serverAdapter = new FastifyAdapter();
71
93
  const bullBoard = createBullBoard({
@@ -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":"AAAA,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,YAAY,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAE7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,eAAe,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EACL,uCAAuC,EACvC,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAoB,2BAA2B,EAAE,MAAM,qBAAqB,CAAA;AAGnF,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAwC7D,IAAI,aAAa,GAAY,EAAE,CAAA;AAE/B,MAAM,iBAAiB,GAAG,CAAC,KAAY,EAA2C,EAAE;IAClF,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;AAC3C,CAAC,CAAA;AAED,MAAM,qBAAqB,GAAG,CAAC,KAAY,EAAE,EAAE;IAC7C,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC;QACrC,CAAC,CAAC,KAAK,CAAC,UAAU;QAClB,CAAC,CAAC,aAAa,CAAC,iCAAiC,CAAA;IACnD,OAAO;QACL,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE;KACvD,CAAA;AACH,CAAC,CAAA;AAED,MAAM,oBAAoB,GAAG,CAAC,aAA+B,EAAE,EAAE;IAC/D,MAAM,MAAM,GAAG,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IAC9D,IAAI,MAAM,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CACb,iGAAiG,CAClG,CAAA;IACH,CAAC;AACH,CAAC,CAAA;AAED,MAAM,mBAAmB,GAAG,CAC1B,EAAU,EACV,QAAuB,EACvB,aAA+B,EACW,EAAE;IAC5C,MAAM,IAAI,GAAG,EAAE,UAAU,EAAE,QAAQ,CAAC,eAAe,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAA;IAE9E,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QACnB,gFAAgF;QAChF,MAAM,KAAK,GAAG,IAAI,aAAa,CAAC,mBAAoB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;QAC9D,OAAO;YACL,KAAK,EAAE,KAAyB;YAChC,OAAO,EAAE,IAAI,gBAAgB,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,qBAAqB,EAAE,CAAC;SAC3E,CAAA;IACH,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,aAAa,CAAC,gBAAgB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;IAC1D,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,aAAa,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,qBAAqB,EAAE,CAAC,EAAE,CAAA;AAC3F,CAAC,CAAA;AAED,MAAM,gBAAgB,GAAG,KAAK,EAC5B,aAA8B,EAC9B,aAA+B,EAC/B,EAAE;IACF,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,uCAAuC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAC3E,CAAA;IAED,MAAM,MAAM,GAAY,EAAE,CAAA;IAC1B,MAAM,aAAa,GAAoB,EAAE,CAAA;IACzC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QAC9B,2DAA2D;QAC3D,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAE,CAAA;QACtC,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACrB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,mBAAmB,CAAC,EAAE,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAA;YAC3E,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAClB,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC7B,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAA;AAClC,CAAC,CAAA;AAED,MAAM,aAAa,GAAG,KAAK,EACzB,OAAwB,EACxB,SAA6C,EAC7C,aAA8B,EAC9B,aAA+B,EAC/B,EAAE;IACF,MAAM,EAAE,wBAAwB,EAAE,GAAG,aAAa,CAAA;IAElD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,wBAAwB,EAAE,EAAE,mCAAmC,CAAC,CAAA;IACpF,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,MAAM,gBAAgB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAA;IACjG,SAAS,CAAC,aAAa,CAAC,aAAa,CAAC,CAAA;IACtC,MAAM,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;IAC9D,aAAa,GAAG,SAAS,CAAA;AAC3B,CAAC,CAAA;AAED,MAAM,eAAe,GAAG,KAAK,EAC3B,OAAwB,EACxB,SAA6C,EAC7C,aAA8B,EAC9B,aAA+B,EAC/B,EAAE;IACF,MAAM,EAAE,wBAAwB,EAAE,GAAG,aAAa,CAAA;IAElD,IAAI,CAAC,wBAAwB,IAAI,wBAAwB,IAAI,CAAC;QAAE,OAAM;IAEtE,MAAM,WAAW,GAAG,IAAI,SAAS,CAC/B,4BAA4B,EAC5B,GAAG,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,CAAC,EACrE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CACzD,CAAA;IAED,8CAA8C;IAC9C,IAAI,CAAC,OAAO,CAAC,SAAS;QAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAA;IAE/D,OAAO,CAAC,SAAS,CAAC,oBAAoB,CACpC,IAAI,iBAAiB,CAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,EAAE,WAAW,EAAE;QACxE,EAAE,EAAE,0BAA0B;QAC9B,cAAc,EAAE,IAAI;KACrB,CAAC,CACH,CAAA;AACH,CAAC,CAAA;AAED,MAAM,YAAY,GAAG,CAAC,OAAyB,EAAmB,EAAE,CAClE,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACpC,KAAK,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC;IACxB,eAAe,EAAE,mBAAmB,CAAC,MAAM,CAAC;IAC5C,MAAM,EAAE,MAAM,CAAC,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC,KAAK,KAAK,IAAI;CAC7B,CAAC,CAAC,CAAA;AAEL,MAAM,MAAM,GAAG,KAAK,EAAE,OAAwB,EAAE,aAA+B,EAAE,EAAE;IACjF,oBAAoB,CAAC,aAAa,CAAC,CAAA;IAEnC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,aAAa,CAAA;IAC9C,MAAM,aAAa,GAAG,YAAY,CAAC,aAAa,CAAC,CAAA;IAEjD,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,gBAAgB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAA;IACtF,aAAa,GAAG,MAAM,CAAA;IAEtB,MAAM,aAAa,GAAG,IAAI,cAAc,EAAE,CAAA;IAC1C,MAAM,SAAS,GAAG,eAAe,CAAC;QAChC,MAAM,EAAE,aAAa;QACrB,aAAa;KACd,CAAC,CAAA;IAEF,oFAAoF;IACpF,aAAa,CAAC,eAAe,CAAC,qBAA4B,CAAC,CAAA;IAC3D,aAAa,CAAC,WAAW,CAAC,UAAU,IAAI,QAAQ,CAAC,CAAA;IAEjD,MAAM,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,cAAc,EAAE,EAAE;QACrD,MAAM,EAAE,QAAQ;KACjB,CAAC,CAAA;IAEF,MAAM,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,CAAC,CAAA;IAEvE,kCAAkC;IAClC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;QACpC,MAAM,OAAO,CAAC,UAAU,CAAC;YACvB,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YAC9C,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SAC5C,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,EAAE,CAAmB,MAAM,EAAE;IACpD,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,YAAY;CACnB,CAAC,CAAA"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  export { type AuthConfig, basicAuth } from './basicAuth.ts';
2
- export { type BullBoardOptions, bullBoard, type QueueProConstructor } from './bullBoard.ts';
2
+ export { type BullBoardOptions, type BullBoardRedisConfig, bullBoard, type QueueConstructor, type QueueProConstructor, } from './bullBoard.ts';
3
3
  export { type ErrorReporterOptions, errorReporterPlugin } from './errorReporterPlugin.ts';
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
1
  export { basicAuth } from "./basicAuth.js";
2
- export { bullBoard } from "./bullBoard.js";
2
+ export { bullBoard, } from "./bullBoard.js";
3
3
  export { errorReporterPlugin } from "./errorReporterPlugin.js";
4
4
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC3D,OAAO,EAAyB,SAAS,EAA4B,MAAM,gBAAgB,CAAA;AAC3F,OAAO,EAA6B,mBAAmB,EAAE,MAAM,0BAA0B,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC3D,OAAO,EAGL,SAAS,GAGV,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAA6B,mBAAmB,EAAE,MAAM,0BAA0B,CAAA"}
package/package.json CHANGED
@@ -1,81 +1,82 @@
1
1
  {
2
- "name": "@lokalise/fastify-bullboard-plugin",
3
- "version": "2.1.0",
4
- "type": "module",
5
- "files": [
6
- "dist",
7
- "README.md",
8
- "LICENSE.md"
9
- ],
10
- "engines": {
11
- "node": ">=20.13.0"
12
- },
13
- "license": "Apache-2.0",
14
- "main": "./dist/index.js",
15
- "module": "./dist/index.js",
16
- "types": "./dist/index.d.ts",
17
- "exports": {
18
- ".": "./dist/index.js",
19
- "./package.json": "./package.json"
20
- },
21
- "scripts": {
22
- "build": "rimraf dist && tsc --project tsconfig.build.json",
23
- "lint": "biome check . && tsc",
24
- "lint:fix": "biome check --write",
25
- "test": "vitest run",
26
- "test:ci": "vitest run --coverage",
27
- "prepublishOnly": "npm run build",
28
- "package-version": "echo $npm_package_version",
29
- "postversion": "biome check --write package.json"
30
- },
31
- "dependencies": {
32
- "@bull-board/api": "^6.14.0",
33
- "@bull-board/fastify": "^6.14.0",
34
- "@fastify/auth": "^5.0.3",
35
- "@fastify/basic-auth": "^6.2.0"
36
- },
37
- "peerDependencies": {
38
- "@lokalise/background-jobs-common": ">=12.6.0"
39
- },
40
- "devDependencies": {
41
- "@biomejs/biome": "^2.3.6",
42
- "@lokalise/background-jobs-common": "^14.0.0",
43
- "@lokalise/biome-config": "^3.1.0",
44
- "@types/node": "^24.0.12",
45
- "@vitest/coverage-v8": "^3.2.4",
46
- "@fastify/awilix": "^8.0.0",
47
- "@fastify/schedule": "^6.0.0",
48
- "@lokalise/fastify-extras": "^30.0.0",
49
- "@lokalise/node-core": "^14.1.0",
50
- "awilix": "^12.0.5",
51
- "awilix-manager": "^6.1.0",
52
- "bullmq": "^5.56.8",
53
- "cross-env": "^10.0.0",
54
- "fastify": "^5.4.0",
55
- "fastify-graceful-shutdown": "^4.0.1",
56
- "fastify-metrics": "^12.1.0",
57
- "fastify-plugin": "^5.0.1",
58
- "ioredis": "^5.6.1",
59
- "pino": "^10.1.0",
60
- "toad-scheduler": "^3.0.1",
61
- "ts-deepmerge": "^7.0.3",
62
- "pino-pretty": "^13.0.0",
63
- "typescript": "5.9.3",
64
- "vitest": "^3.2.4"
65
- },
66
- "keywords": [
67
- "fastify",
68
- "bullboard",
69
- "bull",
70
- "dashboard",
71
- "plugin"
72
- ],
73
- "homepage": "https://github.com/lokalise/shared-ts-libs",
74
- "repository": {
75
- "type": "git",
76
- "url": "git://github.com/lokalise/shared-ts-libs.git"
77
- },
78
- "publishConfig": {
79
- "access": "public"
80
- }
81
- }
2
+ "name": "@lokalise/fastify-bullboard-plugin",
3
+ "version": "2.2.1",
4
+ "type": "module",
5
+ "files": [
6
+ "dist",
7
+ "README.md",
8
+ "LICENSE.md"
9
+ ],
10
+ "engines": {
11
+ "node": ">=20.13.0"
12
+ },
13
+ "license": "Apache-2.0",
14
+ "main": "./dist/index.js",
15
+ "module": "./dist/index.js",
16
+ "types": "./dist/index.d.ts",
17
+ "exports": {
18
+ ".": "./dist/index.js",
19
+ "./package.json": "./package.json"
20
+ },
21
+ "dependencies": {
22
+ "@bull-board/api": "^7.1.5",
23
+ "@bull-board/fastify": "^7.1.5",
24
+ "@fastify/auth": "^5.0.4",
25
+ "@fastify/basic-auth": "^6.2.0",
26
+ "@lokalise/tsconfig": "^4.0.0"
27
+ },
28
+ "peerDependencies": {
29
+ "@lokalise/background-jobs-common": ">=12.6.0"
30
+ },
31
+ "devDependencies": {
32
+ "@biomejs/biome": "^2.3.7",
33
+ "@fastify/awilix": "^8.0.0",
34
+ "@fastify/schedule": "^6.0.0",
35
+ "@lokalise/background-jobs-common": "^14.0.0",
36
+ "@lokalise/biome-config": "^3.1.0",
37
+ "@lokalise/fastify-extras": "^30.7.0",
38
+ "@lokalise/node-core": "^14.1.0",
39
+ "@types/node": "^25.0.3",
40
+ "@vitest/coverage-v8": "^4.0.15",
41
+ "awilix": "^13.0.0",
42
+ "awilix-manager": "^6.3.0",
43
+ "bullmq": "5.76.6",
44
+ "cross-env": "^10.0.0",
45
+ "fastify": "^5.7.4",
46
+ "fastify-graceful-shutdown": "^4.0.1",
47
+ "fastify-metrics": "^13.2.0",
48
+ "fastify-plugin": "^5.0.1",
49
+ "ioredis": "^5.6.1",
50
+ "pino": "^10.1.0",
51
+ "pino-pretty": "^13.0.0",
52
+ "rimraf": "^6.1.3",
53
+ "toad-scheduler": "^4.0.1",
54
+ "ts-deepmerge": "^7.0.3",
55
+ "typescript": "6.0.3",
56
+ "vitest": "^4.0.18"
57
+ },
58
+ "keywords": [
59
+ "fastify",
60
+ "bullboard",
61
+ "bull",
62
+ "dashboard",
63
+ "plugin"
64
+ ],
65
+ "homepage": "https://github.com/lokalise/shared-ts-libs",
66
+ "repository": {
67
+ "type": "git",
68
+ "url": "git://github.com/lokalise/shared-ts-libs.git"
69
+ },
70
+ "publishConfig": {
71
+ "access": "public"
72
+ },
73
+ "scripts": {
74
+ "build": "rimraf dist && tsc --project tsconfig.build.json",
75
+ "lint": "biome check . && tsc",
76
+ "lint:fix": "biome check --write",
77
+ "test": "vitest run",
78
+ "test:ci": "vitest run --coverage",
79
+ "package-version": "echo $npm_package_version",
80
+ "postversion": "biome check --write package.json"
81
+ }
82
+ }