@bull-board/cli 9.7.0 → 9.8.0

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
@@ -28,6 +28,15 @@ Usage:
28
28
 
29
29
  Options:
30
30
  -r, --redis <url> Redis connection URL [redis://localhost:6379]
31
+ --sentinel <list> Comma separated sentinel host:port list, port [26379]
32
+ --sentinel-name <n> Redis master group name, required with --sentinel
33
+ --sentinel-password <pass>
34
+ Password for the sentinel nodes themselves
35
+ --redis-username <name>
36
+ Username for the Redis nodes behind the sentinels
37
+ --redis-password <pass>
38
+ Password for the Redis nodes behind the sentinels
39
+ --redis-db <n> Database to select behind the sentinels
31
40
  -p, --port <port> Port to listen on [3000]
32
41
  --host <address> Interface to bind [127.0.0.1]
33
42
  --prefix <list> Comma separated key prefixes [bull]
@@ -67,6 +76,37 @@ module.exports = {
67
76
  };
68
77
  ```
69
78
 
79
+ ## Redis Sentinel
80
+
81
+ `--sentinel` connects through Redis Sentinel rather than to one instance directly, for a deployment where the master address is not fixed:
82
+
83
+ ```sh
84
+ npx @bull-board/cli --sentinel s1.internal:26379,s2.internal:26379 --sentinel-name mymaster
85
+ ```
86
+
87
+ A port is optional per entry and defaults to 26379. `--sentinel-name` is the master group name from your sentinel configuration and is required. `--sentinel` and `--redis` are mutually exclusive, and passing both is an error rather than a silent preference for one.
88
+
89
+ ioredis resolves the current master through the sentinels listed and follows a failover on its own, so the whole dashboard moves with it: queue reads, the Bull subscriber, and `--history` recording all share the one connection.
90
+
91
+ Credentials in sentinel mode come from their own flags, since there is no URL to carry them. `--redis-username`, `--redis-password` and `--redis-db` apply to the Redis nodes behind the sentinels, while `--sentinel-password` authenticates to the sentinel nodes themselves, which commonly have a different password. Passing any of them alongside a Redis URL is an error, because ioredis would take the URL's own credentials and ignore them.
92
+
93
+ For anything beyond that, including TLS to the sentinel nodes, the config file's `redis` key accepts a full [ioredis options object](https://github.com/redis/ioredis#connect-to-redis) and is passed through untouched:
94
+
95
+ ```js
96
+ // bull-board.config.js
97
+ module.exports = {
98
+ redis: {
99
+ sentinels: [
100
+ { host: 's1.internal', port: 26379 },
101
+ { host: 's2.internal', port: 26379 },
102
+ ],
103
+ name: 'mymaster',
104
+ sentinelPassword: process.env.SENTINEL_PASSWORD,
105
+ enableTLSForSentinelMode: true,
106
+ },
107
+ };
108
+ ```
109
+
70
110
  ## Historical metrics
71
111
 
72
112
  `--history` turns on the long-retention metrics that otherwise need `@bull-board/metrics` wired into an app of your own:
package/dist/bin.js CHANGED
@@ -30,18 +30,6 @@ async function main() {
30
30
  explicitPath: flags.config || process.env.BULL_BOARD_CONFIG,
31
31
  });
32
32
  const config = (0, resolve_1.resolveConfig)({ flags, env: process.env, file });
33
- if (!config.redisUrl.startsWith('/')) {
34
- let parsed;
35
- try {
36
- parsed = new URL(config.redisUrl);
37
- }
38
- catch {
39
- throw new Error(`Invalid Redis URL: ${config.redisUrl}`);
40
- }
41
- if (!['redis:', 'rediss:'].includes(parsed.protocol)) {
42
- throw new Error(`Redis URL must use redis:// or rediss://, got "${parsed.protocol}//"`);
43
- }
44
- }
45
33
  const board = await (0, index_1.run)(config, console, {
46
34
  beforeReady: (close) => {
47
35
  for (const signal of ['SIGINT', 'SIGTERM']) {
package/dist/bin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";;;AACA,wCAA+C;AAC/C,0CAA4C;AAC5C,8CAAiD;AACjD,iCAA8B;AAC9B,mCAA8B;AAC9B,+CAA4C;AAE5C,KAAK,UAAU,IAAI;IACjB,IAAI,KAAoC,CAAC;IACzC,IAAI,CAAC;QACH,KAAK,GAAG,IAAA,kBAAU,EAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,GAAI,KAAe,CAAC,OAAO,oCAAoC,CAAC,CAAC;IACnF,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACf,sCAAsC;QACtC,OAAO,CAAC,GAAG,CAAC,WAAI,CAAC,CAAC;QAClB,OAAO;IACT,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,sCAAsC;QACtC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,CAAC;QAChD,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,IAAA,qBAAc,EAAC;QAChC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;QAClB,YAAY,EAAE,KAAK,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB;KAC5D,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,IAAA,uBAAa,EAAC,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;IAEhE,MAAM,KAAK,GAAG,MAAM,IAAA,WAAG,EAAC,MAAM,EAAE,OAAO,EAAE;QACvC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;YACrB,KAAK,MAAM,MAAM,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAU,EAAE,CAAC;gBACpD,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;oBACxB,sCAAsC;oBACtC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;oBAChC,KAAK,EAAE;yBACJ,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;yBAC3B,KAAK,CAAC,CAAC,KAAY,EAAE,EAAE;wBACtB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;wBAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAClB,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,IAAA,yBAAW,EAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAY,EAAE,EAAE;IAC5B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { RedisOptions } from 'ioredis';
2
+ import type { FlagValues } from './flags';
3
+ import type { FileConfig } from './types';
4
+ export type ConnectionConfig = {
5
+ mode: 'url';
6
+ url: string;
7
+ options: RedisOptions;
8
+ } | {
9
+ mode: 'sentinel';
10
+ options: RedisOptions;
11
+ } | {
12
+ mode: 'options';
13
+ options: RedisOptions;
14
+ };
15
+ export declare function resolveConnection({ flags, env, file, }: {
16
+ flags: FlagValues;
17
+ env: NodeJS.ProcessEnv;
18
+ file: FileConfig;
19
+ }): ConnectionConfig;
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveConnection = resolveConnection;
4
+ const DEFAULT_REDIS_URL = 'redis://localhost:6379';
5
+ const DEFAULT_SENTINEL_PORT = 26379;
6
+ function firstDefined(...values) {
7
+ return values.find((value) => value !== undefined && value !== '');
8
+ }
9
+ function parseSentinel(entry) {
10
+ // A bare IPv6 literal is all colons, so bracket it before the URL parser sees a port.
11
+ const bracketed = !entry.startsWith('[') && entry.indexOf(':') !== entry.lastIndexOf(':') ? `[${entry}]` : entry;
12
+ let parsed;
13
+ try {
14
+ parsed = new URL(`redis://${bracketed}`);
15
+ }
16
+ catch {
17
+ throw new Error(`Invalid sentinel address "${entry}": expected host or host:port.`);
18
+ }
19
+ const port = parsed.port === '' ? DEFAULT_SENTINEL_PORT : Number(parsed.port);
20
+ if (!parsed.hostname || parsed.pathname || parsed.search || port === 0) {
21
+ throw new Error(`Invalid sentinel address "${entry}": expected host or host:port.`);
22
+ }
23
+ return { host: parsed.hostname.replace(/^\[|\]$/g, ''), port };
24
+ }
25
+ function parseSentinels(value) {
26
+ return value
27
+ .split(',')
28
+ .map((entry) => entry.trim())
29
+ .filter(Boolean)
30
+ .map(parseSentinel);
31
+ }
32
+ function assertUsableUrl(url) {
33
+ if (url.startsWith('/'))
34
+ return;
35
+ let parsed;
36
+ try {
37
+ parsed = new URL(url);
38
+ }
39
+ catch {
40
+ throw new Error(`Invalid Redis URL: ${url}`);
41
+ }
42
+ if (!['redis:', 'rediss:'].includes(parsed.protocol)) {
43
+ throw new Error(`Redis URL must use redis:// or rediss://, got "${parsed.protocol}//"`);
44
+ }
45
+ }
46
+ function credentialOptions({ flags, env }) {
47
+ const options = {};
48
+ const names = [];
49
+ const add = (name, key, value) => {
50
+ if (value === undefined)
51
+ return;
52
+ options[key] = value;
53
+ names.push(name);
54
+ };
55
+ const db = firstDefined(flags['redis-db'], env.BULL_BOARD_REDIS_DB);
56
+ if (db !== undefined && (!Number.isInteger(Number(db)) || Number(db) < 0)) {
57
+ throw new Error(`Invalid --redis-db: ${db}`);
58
+ }
59
+ add('--sentinel-password', 'sentinelPassword', firstDefined(flags['sentinel-password'], env.BULL_BOARD_SENTINEL_PASSWORD));
60
+ add('--redis-username', 'username', firstDefined(flags['redis-username'], env.BULL_BOARD_REDIS_USERNAME));
61
+ add('--redis-password', 'password', firstDefined(flags['redis-password'], env.BULL_BOARD_REDIS_PASSWORD));
62
+ add('--redis-db', 'db', db === undefined ? undefined : Number(db));
63
+ return { options, names };
64
+ }
65
+ function resolveConnection({ flags, env, file, }) {
66
+ var _a;
67
+ const explicitUrl = firstDefined(flags.redis, env.BULL_BOARD_REDIS_URL);
68
+ const sentinelList = firstDefined(flags.sentinel, env.BULL_BOARD_SENTINELS);
69
+ const sentinelName = firstDefined(flags['sentinel-name'], env.BULL_BOARD_SENTINEL_NAME);
70
+ const credentials = credentialOptions({ flags, env });
71
+ if (sentinelList && explicitUrl) {
72
+ throw new Error('Use either a Redis URL or --sentinel, not both.');
73
+ }
74
+ if (sentinelList) {
75
+ if (!sentinelName) {
76
+ throw new Error('--sentinel needs --sentinel-name, the Redis master group name.');
77
+ }
78
+ return {
79
+ mode: 'sentinel',
80
+ options: {
81
+ sentinels: parseSentinels(sentinelList),
82
+ name: sentinelName,
83
+ ...credentials.options,
84
+ },
85
+ };
86
+ }
87
+ const fileRedis = file.redis;
88
+ if (!explicitUrl && typeof fileRedis === 'object') {
89
+ const options = { ...fileRedis, ...credentials.options };
90
+ return fileRedis.sentinels ? { mode: 'sentinel', options } : { mode: 'options', options };
91
+ }
92
+ const url = (_a = explicitUrl !== null && explicitUrl !== void 0 ? explicitUrl : (typeof fileRedis === 'string' ? fileRedis : undefined)) !== null && _a !== void 0 ? _a : DEFAULT_REDIS_URL;
93
+ assertUsableUrl(url);
94
+ if (credentials.names.length > 0) {
95
+ throw new Error(`${credentials.names.join(', ')} cannot be combined with a Redis URL. Put credentials in the URL itself, or connect through --sentinel.`);
96
+ }
97
+ return { mode: 'url', url, options: {} };
98
+ }
99
+ //# sourceMappingURL=connection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/config/connection.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,24 @@ export declare const FLAG_OPTIONS: {
3
3
  readonly type: "string";
4
4
  readonly short: "r";
5
5
  };
6
+ readonly sentinel: {
7
+ readonly type: "string";
8
+ };
9
+ readonly 'sentinel-name': {
10
+ readonly type: "string";
11
+ };
12
+ readonly 'sentinel-password': {
13
+ readonly type: "string";
14
+ };
15
+ readonly 'redis-username': {
16
+ readonly type: "string";
17
+ };
18
+ readonly 'redis-password': {
19
+ readonly type: "string";
20
+ };
21
+ readonly 'redis-db': {
22
+ readonly type: "string";
23
+ };
6
24
  readonly port: {
7
25
  readonly type: "string";
8
26
  readonly short: "p";
@@ -63,6 +81,12 @@ export declare const FLAG_OPTIONS: {
63
81
  };
64
82
  export declare function parseFlags(argv: string[]): {
65
83
  redis?: string | undefined;
84
+ sentinel?: string | undefined;
85
+ 'sentinel-name'?: string | undefined;
86
+ 'sentinel-password'?: string | undefined;
87
+ 'redis-username'?: string | undefined;
88
+ 'redis-password'?: string | undefined;
89
+ 'redis-db'?: string | undefined;
66
90
  port?: string | undefined;
67
91
  host?: string | undefined;
68
92
  prefix?: string | undefined;
@@ -5,6 +5,12 @@ exports.parseFlags = parseFlags;
5
5
  const node_util_1 = require("node:util");
6
6
  exports.FLAG_OPTIONS = {
7
7
  redis: { type: 'string', short: 'r' },
8
+ sentinel: { type: 'string' },
9
+ 'sentinel-name': { type: 'string' },
10
+ 'sentinel-password': { type: 'string' },
11
+ 'redis-username': { type: 'string' },
12
+ 'redis-password': { type: 'string' },
13
+ 'redis-db': { type: 'string' },
8
14
  port: { type: 'string', short: 'p' },
9
15
  host: { type: 'string' },
10
16
  prefix: { type: 'string' },
@@ -1 +1 @@
1
- {"version":3,"file":"flags.js","sourceRoot":"","sources":["../../src/config/flags.ts"],"names":[],"mappings":";;;AAwBA,gCAIC;AA5BD,yCAAsC;AAEzB,QAAA,YAAY,GAAG;IAC1B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;IACrC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;IACpC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACxB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC1B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC1B,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACnC,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC/B,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;IAChC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACxB,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC5B,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACjC,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;IAC5B,wBAAwB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC5C,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC1B,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;IAC9B,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;IAC/B,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE;IACrC,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE;IACxC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;CACnB,CAAC;AAEX,SAAgB,UAAU,CAAC,IAAc;IACvC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,qBAAS,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,oBAAY,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAC;IAE7F,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"flags.js","sourceRoot":"","sources":["../../src/config/flags.ts"],"names":[],"mappings":";;;AA8BA,gCAIC;AAlCD,yCAAsC;AAEzB,QAAA,YAAY,GAAG;IAC1B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;IACrC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC5B,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACnC,mBAAmB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACvC,gBAAgB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACpC,gBAAgB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACpC,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC9B,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;IACpC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACxB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC1B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC1B,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACnC,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC/B,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;IAChC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACxB,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC5B,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACjC,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;IAC5B,wBAAwB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC5C,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC1B,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;IAC9B,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;IAC/B,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE;IACrC,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE;IACxC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;CACnB,CAAC;AAEX,SAAgB,UAAU,CAAC,IAAc;IACvC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,qBAAS,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,oBAAY,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAC;IAE7F,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.resolveConfig = resolveConfig;
4
+ const connection_1 = require("./connection");
4
5
  const DEFAULTS = {
5
- redisUrl: 'redis://localhost:6379',
6
6
  port: 3000,
7
7
  host: '127.0.0.1',
8
8
  prefixes: ['bull'],
@@ -40,7 +40,7 @@ function normalizeBasePath(value) {
40
40
  return trimmed === '' ? '' : `/${trimmed}`;
41
41
  }
42
42
  function resolveConfig({ flags, env, file, }) {
43
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1;
43
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0;
44
44
  const explicitQueues = Array.isArray(file.queues) ? file.queues : undefined;
45
45
  const queueOptions = (file.queues && !Array.isArray(file.queues) ? file.queues : {});
46
46
  const user = firstDefined(flags.user, env.BULL_BOARD_USER, file.user);
@@ -60,20 +60,20 @@ function resolveConfig({ flags, env, file, }) {
60
60
  uiConfig.showMetrics = (_d = uiConfig.showMetrics) !== null && _d !== void 0 ? _d : true;
61
61
  }
62
62
  return {
63
- redisUrl: (_e = firstDefined(flags.redis, env.BULL_BOARD_REDIS_URL, file.redis)) !== null && _e !== void 0 ? _e : DEFAULTS.redisUrl,
64
- port: (_h = (_g = (_f = toNumber(flags.port, 'port')) !== null && _f !== void 0 ? _f : toNumber(env.BULL_BOARD_PORT, 'port')) !== null && _g !== void 0 ? _g : toNumber(file.port, 'port')) !== null && _h !== void 0 ? _h : DEFAULTS.port,
65
- host: (_j = firstDefined(flags.host, env.BULL_BOARD_HOST, file.host)) !== null && _j !== void 0 ? _j : DEFAULTS.host,
66
- prefixes: (_m = (_l = (_k = toList(flags.prefix)) !== null && _k !== void 0 ? _k : toList(env.BULL_BOARD_PREFIX)) !== null && _l !== void 0 ? _l : toList(file.prefix)) !== null && _m !== void 0 ? _m : DEFAULTS.prefixes,
67
- queueNames: (_q = (_p = (_o = toList(flags.queues)) !== null && _o !== void 0 ? _o : toList(env.BULL_BOARD_QUEUES)) !== null && _p !== void 0 ? _p : toList(explicitQueues)) !== null && _q !== void 0 ? _q : null,
68
- scanInterval: (_t = (_s = (_r = toNumber(flags['scan-interval'], 'scan-interval')) !== null && _r !== void 0 ? _r : toNumber(env.BULL_BOARD_SCAN_INTERVAL, 'scan-interval')) !== null && _s !== void 0 ? _s : toNumber(file.scanInterval, 'scan-interval')) !== null && _t !== void 0 ? _t : DEFAULTS.scanInterval,
69
- basePath: (_w = (_v = (_u = normalizeBasePath(flags['base-path'])) !== null && _u !== void 0 ? _u : normalizeBasePath(env.BULL_BOARD_BASE_PATH)) !== null && _v !== void 0 ? _v : normalizeBasePath(file.basePath)) !== null && _w !== void 0 ? _w : '',
63
+ connection: (0, connection_1.resolveConnection)({ flags, env, file }),
64
+ port: (_g = (_f = (_e = toNumber(flags.port, 'port')) !== null && _e !== void 0 ? _e : toNumber(env.BULL_BOARD_PORT, 'port')) !== null && _f !== void 0 ? _f : toNumber(file.port, 'port')) !== null && _g !== void 0 ? _g : DEFAULTS.port,
65
+ host: (_h = firstDefined(flags.host, env.BULL_BOARD_HOST, file.host)) !== null && _h !== void 0 ? _h : DEFAULTS.host,
66
+ prefixes: (_l = (_k = (_j = toList(flags.prefix)) !== null && _j !== void 0 ? _j : toList(env.BULL_BOARD_PREFIX)) !== null && _k !== void 0 ? _k : toList(file.prefix)) !== null && _l !== void 0 ? _l : DEFAULTS.prefixes,
67
+ queueNames: (_p = (_o = (_m = toList(flags.queues)) !== null && _m !== void 0 ? _m : toList(env.BULL_BOARD_QUEUES)) !== null && _o !== void 0 ? _o : toList(explicitQueues)) !== null && _p !== void 0 ? _p : null,
68
+ scanInterval: (_s = (_r = (_q = toNumber(flags['scan-interval'], 'scan-interval')) !== null && _q !== void 0 ? _q : toNumber(env.BULL_BOARD_SCAN_INTERVAL, 'scan-interval')) !== null && _r !== void 0 ? _r : toNumber(file.scanInterval, 'scan-interval')) !== null && _s !== void 0 ? _s : DEFAULTS.scanInterval,
69
+ basePath: (_v = (_u = (_t = normalizeBasePath(flags['base-path'])) !== null && _t !== void 0 ? _t : normalizeBasePath(env.BULL_BOARD_BASE_PATH)) !== null && _u !== void 0 ? _u : normalizeBasePath(file.basePath)) !== null && _v !== void 0 ? _v : '',
70
70
  readOnly,
71
71
  auth: user && password ? { user, password } : null,
72
- open: flags['no-open'] === true ? false : ((_y = (_x = toBoolean(env.BULL_BOARD_OPEN)) !== null && _x !== void 0 ? _x : file.open) !== null && _y !== void 0 ? _y : true),
72
+ open: flags['no-open'] === true ? false : ((_x = (_w = toBoolean(env.BULL_BOARD_OPEN)) !== null && _w !== void 0 ? _w : file.open) !== null && _x !== void 0 ? _x : true),
73
73
  browser: firstDefined(flags.browser, env.BULL_BOARD_BROWSER, env.BROWSER, file.browser),
74
74
  uiConfig,
75
75
  queueOptions,
76
- noRetry: (_1 = (_0 = (_z = flags['no-retry']) !== null && _z !== void 0 ? _z : toBoolean(env.BULL_BOARD_NO_RETRY)) !== null && _0 !== void 0 ? _0 : file.noRetry) !== null && _1 !== void 0 ? _1 : false,
76
+ noRetry: (_0 = (_z = (_y = flags['no-retry']) !== null && _y !== void 0 ? _y : toBoolean(env.BULL_BOARD_NO_RETRY)) !== null && _z !== void 0 ? _z : file.noRetry) !== null && _0 !== void 0 ? _0 : false,
77
77
  history,
78
78
  };
79
79
  }
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/config/resolve.ts"],"names":[],"mappings":";;AAgDA,sCAqEC;AAjHD,MAAM,QAAQ,GAAG;IACf,QAAQ,EAAE,wBAAwB;IAClC,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,WAAW;IACjB,QAAQ,EAAE,CAAC,MAAM,CAAC;IAClB,YAAY,EAAE,EAAE;CACjB,CAAC;AAEF,SAAS,YAAY,CAAI,GAAG,MAA4B;IACtD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,MAAM,CAAC,KAAoC;IAClD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SAC5D,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,OAAO,CAAC,CAAC;IAEnB,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9C,CAAC;AAED,SAAS,QAAQ,CAAC,KAAkC,EAAE,KAAa;IACjE,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,MAAM,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,WAAW,KAAK,KAAK,KAAK,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,SAAS,CAAC,KAAyB;IAC1C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAE1C,OAAO,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAyB;IAClD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IAEhD,OAAO,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC;AAC7C,CAAC;AAED,SAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,GAAG,EACH,IAAI,GAKL;;IACC,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5E,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAGlF,CAAC;IAEF,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACtE,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtF,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;IAC/E,CAAC;IAED,MAAM,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IACtC,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,GAAG,CAAC,sBAAsB,CAAC,CAAC;IAClF,IAAI,UAAU,EAAE,CAAC;QACf,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC;IACnC,CAAC;IAED,MAAM,QAAQ,GACZ,MAAA,MAAA,MAAA,KAAK,CAAC,WAAW,CAAC,mCAAI,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC,mCAAI,IAAI,CAAC,QAAQ,mCAAI,KAAK,CAAC;IACtF,MAAM,OAAO,GAAG,cAAc,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC/D,IAAI,OAAO,EAAE,CAAC;QACZ,yFAAyF;QACzF,QAAQ,CAAC,WAAW,GAAG,MAAA,QAAQ,CAAC,WAAW,mCAAI,IAAI,CAAC;IACtD,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,MAAA,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,oBAAoB,EAAE,IAAI,CAAC,KAAK,CAAC,mCAAI,QAAQ,CAAC,QAAQ;QAC9F,IAAI,EACF,MAAA,MAAA,MAAA,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,mCAC5B,QAAQ,CAAC,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC,mCACrC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,mCAC3B,QAAQ,CAAC,IAAI;QACf,IAAI,EAAE,MAAA,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,mCAAI,QAAQ,CAAC,IAAI;QAC/E,QAAQ,EACN,MAAA,MAAA,MAAA,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,mCACpB,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,mCAC7B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,mCACnB,QAAQ,CAAC,QAAQ;QACnB,UAAU,EACR,MAAA,MAAA,MAAA,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,mCAAI,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,mCAAI,MAAM,CAAC,cAAc,CAAC,mCAAI,IAAI;QACzF,YAAY,EACV,MAAA,MAAA,MAAA,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,eAAe,CAAC,mCACjD,QAAQ,CAAC,GAAG,CAAC,wBAAwB,EAAE,eAAe,CAAC,mCACvD,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,eAAe,CAAC,mCAC5C,QAAQ,CAAC,YAAY;QACvB,QAAQ,EACN,MAAA,MAAA,MAAA,iBAAiB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,mCACrC,iBAAiB,CAAC,GAAG,CAAC,oBAAoB,CAAC,mCAC3C,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,mCAChC,EAAE;QACJ,QAAQ;QACR,IAAI,EAAE,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI;QAClD,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAA,MAAA,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,mCAAI,IAAI,CAAC,IAAI,mCAAI,IAAI,CAAC;QAC/F,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,kBAAkB,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC;QACvF,QAAQ;QACR,YAAY;QACZ,OAAO,EAAE,MAAA,MAAA,MAAA,KAAK,CAAC,UAAU,CAAC,mCAAI,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC,mCAAI,IAAI,CAAC,OAAO,mCAAI,KAAK;QACzF,OAAO;KACR,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,EACtB,KAAK,EACL,GAAG,EACH,IAAI,EACJ,QAAQ,GAMT;;IACC,MAAM,WAAW,GACf,OAAO,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,MAAA,IAAI,CAAC,OAAO,mCAAI,EAAE,CAAC,CAAC;IACvF,MAAM,OAAO,GACX,MAAA,MAAA,MAAA,KAAK,CAAC,OAAO,mCAAI,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,mCAAI,WAAW,CAAC,OAAO,mCAAI,KAAK,CAAC;IACrF,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAE1B,OAAO;QACL,uEAAuE;QACvE,MAAM,EAAE,MAAA,WAAW,CAAC,MAAM,mCAAI,CAAC,QAAQ;QACvC,aAAa,EACX,MAAA,MAAA,QAAQ,CAAC,KAAK,CAAC,wBAAwB,CAAC,EAAE,wBAAwB,CAAC,mCACnE,QAAQ,CAAC,GAAG,CAAC,iCAAiC,EAAE,wBAAwB,CAAC,mCACzE,QAAQ,CAAC,WAAW,CAAC,aAAa,EAAE,wBAAwB,CAAC;QAC/D,SAAS,EAAE,WAAW,CAAC,SAAS;QAChC,OAAO,EAAE,MAAA,WAAW,CAAC,OAAO,mCAAI,IAAI;QACpC,kBAAkB,EAAE,WAAW,CAAC,kBAAkB;KACnD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/config/resolve.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  import type { QueueAdapterOptions, UIConfig } from '@bull-board/api/typings/app';
2
2
  import type { Retention } from '@bull-board/metrics';
3
+ import type { RedisOptions } from 'ioredis';
4
+ import type { ConnectionConfig } from './connection';
3
5
  export interface FileHistoryConfig {
4
6
  enabled?: boolean;
5
7
  /** Write snapshots from this process. Defaults to true unless the board is read-only. */
@@ -17,7 +19,7 @@ export interface HistoryConfig {
17
19
  snapshotIntervalMs?: number;
18
20
  }
19
21
  export interface FileConfig {
20
- redis?: string;
22
+ redis?: string | RedisOptions;
21
23
  port?: number;
22
24
  host?: string;
23
25
  prefix?: string | string[];
@@ -34,7 +36,7 @@ export interface FileConfig {
34
36
  history?: boolean | FileHistoryConfig;
35
37
  }
36
38
  export interface CliConfig {
37
- redisUrl: string;
39
+ connection: ConnectionConfig;
38
40
  port: number;
39
41
  host: string;
40
42
  prefixes: string[];
@@ -1,21 +1,23 @@
1
+ import type { ConnectionConfig } from './config/connection';
1
2
  export declare const RETRY_INTERVAL_MS = 3000;
2
3
  export type ConnectionState = {
3
4
  status: 'connecting';
4
- redisUrl: string;
5
+ redis: string;
5
6
  attempts: number;
6
7
  } | {
7
8
  status: 'connected';
8
- redisUrl: string;
9
+ redis: string;
9
10
  attempts: number;
10
11
  } | {
11
12
  status: 'unavailable';
12
- redisUrl: string;
13
+ redis: string;
13
14
  attempts: number;
14
15
  lastError: string;
15
16
  } | {
16
17
  status: 'degraded';
17
- redisUrl: string;
18
+ redis: string;
18
19
  attempts: number;
19
20
  lastError: string;
20
21
  };
22
+ export declare function describeConnection(connection: ConnectionConfig): string;
21
23
  export declare function maskRedisUrl(redisUrl: string): string;
@@ -1,8 +1,25 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RETRY_INTERVAL_MS = void 0;
4
+ exports.describeConnection = describeConnection;
4
5
  exports.maskRedisUrl = maskRedisUrl;
5
6
  exports.RETRY_INTERVAL_MS = 3000;
7
+ function describeConnection(connection) {
8
+ if (connection.mode === 'url')
9
+ return maskRedisUrl(connection.url);
10
+ const { name, sentinels, host, port, path } = connection.options;
11
+ if (sentinels) {
12
+ const addresses = sentinels
13
+ .map((sentinel) => {
14
+ var _a, _b;
15
+ const host = (_a = sentinel.host) !== null && _a !== void 0 ? _a : 'localhost';
16
+ return `${host.includes(':') ? `[${host}]` : host}:${(_b = sentinel.port) !== null && _b !== void 0 ? _b : 26379}`;
17
+ })
18
+ .join(',');
19
+ return `sentinel://${name}@${addresses}`;
20
+ }
21
+ return path !== null && path !== void 0 ? path : `redis://${host !== null && host !== void 0 ? host : 'localhost'}:${port !== null && port !== void 0 ? port : 6379}`;
22
+ }
6
23
  function maskRedisUrl(redisUrl) {
7
24
  if (redisUrl.startsWith('/'))
8
25
  return redisUrl;
@@ -1 +1 @@
1
- {"version":3,"file":"connectionState.js","sourceRoot":"","sources":["../src/connectionState.ts"],"names":[],"mappings":";;;AAQA,oCAuBC;AA/BY,QAAA,iBAAiB,GAAG,IAAI,CAAC;AAQtC,SAAgB,YAAY,CAAC,QAAgB;IAC3C,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,QAAQ,CAAC;IAE9C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;QACjC,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;YACxB,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,CAAC;YACvC,IAAI,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBACpC,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"connectionState.js","sourceRoot":"","sources":["../src/connectionState.ts"],"names":[],"mappings":";;;AAUA,gDAiBC;AAED,oCAuBC;AAlDY,QAAA,iBAAiB,GAAG,IAAI,CAAC;AAQtC,SAAgB,kBAAkB,CAAC,UAA4B;IAC7D,IAAI,UAAU,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAEnE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC;IACjE,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,SAAS,GAAG,SAAS;aACxB,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;;YAChB,MAAM,IAAI,GAAG,MAAA,QAAQ,CAAC,IAAI,mCAAI,WAAW,CAAC;YAE1C,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,MAAA,QAAQ,CAAC,IAAI,mCAAI,KAAK,EAAE,CAAC;QAChF,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,CAAC,CAAC;QAEb,OAAO,cAAc,IAAI,IAAI,SAAS,EAAE,CAAC;IAC3C,CAAC;IAED,OAAO,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,WAAW,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,WAAW,IAAI,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,IAAI,EAAE,CAAC;AAClE,CAAC;AAED,SAAgB,YAAY,CAAC,QAAgB;IAC3C,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,QAAQ,CAAC;IAE9C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;QACjC,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;YACxB,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,CAAC;YACvC,IAAI,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBACpC,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -119,7 +119,7 @@ function renderDiagnosticPage(state) {
119
119
  <h1>bull-board is waiting for Redis</h1>
120
120
  <p class="status">${headline}</p>
121
121
  <dl>
122
- <dt>Redis URL</dt><dd><code>${escapeHtml(state.redisUrl)}</code></dd>
122
+ <dt>Redis</dt><dd><code>${escapeHtml(state.redis)}</code></dd>
123
123
  <dt>Error</dt><dd><code>${escapeHtml(error)}</code></dd>
124
124
  ${attemptsRow}
125
125
  </dl>
@@ -1 +1 @@
1
- {"version":3,"file":"diagnosticPage.js","sourceRoot":"","sources":["../src/diagnosticPage.ts"],"names":[],"mappings":";;;AA2DA,oDAoGC;AA/JD,uDAA4E;AAE/D,QAAA,WAAW,GAAG,0BAA0B,CAAC;AAEtD,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,KAAK;SACT,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,aAAa,CAAC,KAAsB;IAK3C,MAAM,YAAY,GAAG,mCAAiB,GAAG,IAAI,CAAC;IAE9C,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QAChC,MAAM,aAAa,GACjB,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,QAAQ,0BAA0B,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,OAAO;YACL,QAAQ,EAAE,qBAAqB,aAAa,qCAAqC;YACjF,KAAK,EAAE,KAAK,CAAC,SAAS;YACtB,MAAM,EACJ,uFAAuF;gBACvF,wFAAwF;gBACxF,uFAAuF;gBACvF,sCAAsC;SACzC,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;QACnC,OAAO;YACL,QAAQ,EAAE,8BAA8B,KAAK,CAAC,QAAQ,IAAI;YAC1D,KAAK,EAAE,KAAK,CAAC,SAAS;YACtB,MAAM,EAAE,kBAAkB,YAAY,4DAA4D;SACnG,CAAC;IACJ,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,oBAAoB;QAC9B,KAAK,EAAE,uCAAuC;QAC9C,MAAM,EAAE,kBAAkB,YAAY,kGAAkG;KACzI,CAAC;AACJ,CAAC;AAED,MAAM,aAAa,GAAG;;;;;;;;;CASrB,CAAC;AAEF,SAAgB,oBAAoB,CAAC,KAAsB;IACzD,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACzD,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,wBAAwB,KAAK,CAAC,QAAQ,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5F,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC;IAEhE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAkEa,QAAQ;;kCAEI,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC;8BAC9B,UAAU,CAAC,KAAK,CAAC;MACzC,WAAW;;;IAGb,MAAM;qBACW,MAAM;;;;YAIf,IAAI,CAAC,SAAS,CAAC,mBAAW,CAAC;;;;;;;;;;;;;;;;CAgBtC,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"diagnosticPage.js","sourceRoot":"","sources":["../src/diagnosticPage.ts"],"names":[],"mappings":";;;AA2DA,oDAoGC;AA/JD,uDAA4E;AAE/D,QAAA,WAAW,GAAG,0BAA0B,CAAC;AAEtD,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,KAAK;SACT,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,aAAa,CAAC,KAAsB;IAK3C,MAAM,YAAY,GAAG,mCAAiB,GAAG,IAAI,CAAC;IAE9C,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QAChC,MAAM,aAAa,GACjB,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,QAAQ,0BAA0B,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,OAAO;YACL,QAAQ,EAAE,qBAAqB,aAAa,qCAAqC;YACjF,KAAK,EAAE,KAAK,CAAC,SAAS;YACtB,MAAM,EACJ,uFAAuF;gBACvF,wFAAwF;gBACxF,uFAAuF;gBACvF,sCAAsC;SACzC,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;QACnC,OAAO;YACL,QAAQ,EAAE,8BAA8B,KAAK,CAAC,QAAQ,IAAI;YAC1D,KAAK,EAAE,KAAK,CAAC,SAAS;YACtB,MAAM,EAAE,kBAAkB,YAAY,4DAA4D;SACnG,CAAC;IACJ,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,oBAAoB;QAC9B,KAAK,EAAE,uCAAuC;QAC9C,MAAM,EAAE,kBAAkB,YAAY,kGAAkG;KACzI,CAAC;AACJ,CAAC;AAED,MAAM,aAAa,GAAG;;;;;;;;;CASrB,CAAC;AAEF,SAAgB,oBAAoB,CAAC,KAAsB;IACzD,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACzD,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,wBAAwB,KAAK,CAAC,QAAQ,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5F,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC;IAEhE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAkEa,QAAQ;;8BAEA,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;8BACvB,UAAU,CAAC,KAAK,CAAC;MACzC,WAAW;;;IAGb,MAAM;qBACW,MAAM;;;;YAIf,IAAI,CAAC,SAAS,CAAC,mBAAW,CAAC;;;;;;;;;;;;;;;;CAgBtC,CAAC;AACF,CAAC"}
package/dist/help.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const HELP = "\nbull-board - run the bull-board dashboard against a Redis instance\n\nUsage:\n bull-board [options]\n npx @bull-board/cli [options]\n\nOptions:\n -r, --redis <url> Redis connection URL [redis://localhost:6379]\n -p, --port <port> Port to listen on [3000]\n --host <address> Interface to bind [127.0.0.1]\n --prefix <list> Comma separated key prefixes [bull]\n --queues <list> Use these queue names instead of discovering\n --scan-interval <s> Seconds between rescans, 0 to scan once [10]\n --base-path <path> Serve the dashboard under a path prefix\n --read-only Disable every destructive action\n --user <name> Basic auth user (requires --password)\n --password <pass> Basic auth password (requires --user)\n --board-title <s> Dashboard title\n --history Record and serve long-retention metrics history\n --history-retention-days <n>\n Days of history to keep [90]\n --config <file> Path to a config file\n --browser <command> Command to open the browser with [$BROWSER]\n --no-open Do not open a browser\n --no-retry Exit if Redis is unreachable instead of retrying\n -h, --help Show this help\n -v, --version Show the version\n\nIf Redis is unreachable at startup, bull-board still opens: it serves a\ndiagnostic page explaining why, keeps retrying every 3 seconds, and switches\nto the real dashboard on its own once Redis answers. That only covers\nstartup: once the dashboard is live it stays live, even if Redis goes away\nlater. The diagnostic page does not come back; API requests just stop\nreturning until Redis is reachable again, and Ctrl-C still works.\nPass --no-retry to get the old behaviour back instead: print the error and\nexit 1 immediately, without opening a port.\n\n--history turns on historical metrics: the dashboard gains a range selector\nper queue and a cross-queue Metrics history page, and this process records\nthroughput, latency and queue age into Redis under the bull-board:metrics:\nnamespace once a minute. --read-only stops the recording but keeps serving\nwhatever another process has recorded.\n\nEnvironment variables mirror every flag, for example BULL_BOARD_REDIS_URL,\nBULL_BOARD_PORT, BULL_BOARD_READ_ONLY.\n\nExamples:\n bull-board\n bull-board -r redis://localhost:6379 -p 4000\n bull-board --prefix tenant-a,tenant-b --read-only\n bull-board --user admin --password secret --host 0.0.0.0\n";
1
+ export declare const HELP = "\nbull-board - run the bull-board dashboard against a Redis instance\n\nUsage:\n bull-board [options]\n npx @bull-board/cli [options]\n\nOptions:\n -r, --redis <url> Redis connection URL [redis://localhost:6379]\n --sentinel <list> Comma separated sentinel host:port list, port [26379]\n --sentinel-name <n> Redis master group name, required with --sentinel\n --sentinel-password <pass>\n Password for the sentinel nodes themselves\n --redis-username <name>\n Username for the Redis nodes behind the sentinels\n --redis-password <pass>\n Password for the Redis nodes behind the sentinels\n --redis-db <n> Database to select behind the sentinels\n -p, --port <port> Port to listen on [3000]\n --host <address> Interface to bind [127.0.0.1]\n --prefix <list> Comma separated key prefixes [bull]\n --queues <list> Use these queue names instead of discovering\n --scan-interval <s> Seconds between rescans, 0 to scan once [10]\n --base-path <path> Serve the dashboard under a path prefix\n --read-only Disable every destructive action\n --user <name> Basic auth user (requires --password)\n --password <pass> Basic auth password (requires --user)\n --board-title <s> Dashboard title\n --history Record and serve long-retention metrics history\n --history-retention-days <n>\n Days of history to keep [90]\n --config <file> Path to a config file\n --browser <command> Command to open the browser with [$BROWSER]\n --no-open Do not open a browser\n --no-retry Exit if Redis is unreachable instead of retrying\n -h, --help Show this help\n -v, --version Show the version\n\nIf Redis is unreachable at startup, bull-board still opens: it serves a\ndiagnostic page explaining why, keeps retrying every 3 seconds, and switches\nto the real dashboard on its own once Redis answers. That only covers\nstartup: once the dashboard is live it stays live, even if Redis goes away\nlater. The diagnostic page does not come back; API requests just stop\nreturning until Redis is reachable again, and Ctrl-C still works.\nPass --no-retry to get the old behaviour back instead: print the error and\nexit 1 immediately, without opening a port.\n\n--history turns on historical metrics: the dashboard gains a range selector\nper queue and a cross-queue Metrics history page, and this process records\nthroughput, latency and queue age into Redis under the bull-board:metrics:\nnamespace once a minute. --read-only stops the recording but keeps serving\nwhatever another process has recorded.\n\n--sentinel connects through Redis Sentinel instead of a URL, and the two are\nmutually exclusive. ioredis resolves the current master through the sentinels\nlisted and follows a failover on its own, so queue reads, the Bull subscriber\nand --history recording all move with it. The credential flags above apply to\nsentinel mode only; with a Redis URL, put credentials in the URL itself.\n\nEnvironment variables mirror every flag, for example BULL_BOARD_REDIS_URL,\nBULL_BOARD_SENTINELS, BULL_BOARD_SENTINEL_NAME, BULL_BOARD_PORT,\nBULL_BOARD_READ_ONLY.\n\nExamples:\n bull-board\n bull-board -r redis://localhost:6379 -p 4000\n bull-board --prefix tenant-a,tenant-b --read-only\n bull-board --user admin --password secret --host 0.0.0.0\n bull-board --sentinel s1:26379,s2:26379 --sentinel-name mymaster\n";
package/dist/help.js CHANGED
@@ -10,6 +10,15 @@ Usage:
10
10
 
11
11
  Options:
12
12
  -r, --redis <url> Redis connection URL [redis://localhost:6379]
13
+ --sentinel <list> Comma separated sentinel host:port list, port [26379]
14
+ --sentinel-name <n> Redis master group name, required with --sentinel
15
+ --sentinel-password <pass>
16
+ Password for the sentinel nodes themselves
17
+ --redis-username <name>
18
+ Username for the Redis nodes behind the sentinels
19
+ --redis-password <pass>
20
+ Password for the Redis nodes behind the sentinels
21
+ --redis-db <n> Database to select behind the sentinels
13
22
  -p, --port <port> Port to listen on [3000]
14
23
  --host <address> Interface to bind [127.0.0.1]
15
24
  --prefix <list> Comma separated key prefixes [bull]
@@ -45,13 +54,21 @@ throughput, latency and queue age into Redis under the bull-board:metrics:
45
54
  namespace once a minute. --read-only stops the recording but keeps serving
46
55
  whatever another process has recorded.
47
56
 
57
+ --sentinel connects through Redis Sentinel instead of a URL, and the two are
58
+ mutually exclusive. ioredis resolves the current master through the sentinels
59
+ listed and follows a failover on its own, so queue reads, the Bull subscriber
60
+ and --history recording all move with it. The credential flags above apply to
61
+ sentinel mode only; with a Redis URL, put credentials in the URL itself.
62
+
48
63
  Environment variables mirror every flag, for example BULL_BOARD_REDIS_URL,
49
- BULL_BOARD_PORT, BULL_BOARD_READ_ONLY.
64
+ BULL_BOARD_SENTINELS, BULL_BOARD_SENTINEL_NAME, BULL_BOARD_PORT,
65
+ BULL_BOARD_READ_ONLY.
50
66
 
51
67
  Examples:
52
68
  bull-board
53
69
  bull-board -r redis://localhost:6379 -p 4000
54
70
  bull-board --prefix tenant-a,tenant-b --read-only
55
71
  bull-board --user admin --password secret --host 0.0.0.0
72
+ bull-board --sentinel s1:26379,s2:26379 --sentinel-name mymaster
56
73
  `;
57
74
  //# sourceMappingURL=help.js.map
package/dist/help.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":";;;AAAa,QAAA,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoDnB,CAAC"}
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":";;;AAAa,QAAA,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqEnB,CAAC"}
package/dist/index.js CHANGED
@@ -37,15 +37,29 @@ async function closeWithGrace(promise, ms, onTimeout) {
37
37
  onTimeout();
38
38
  }
39
39
  async function run(config, log = console, { beforeReady, } = {}) {
40
- const client = new ioredis_1.Redis(config.redisUrl, {
40
+ const redisOptions = {
41
41
  maxRetriesPerRequest: null,
42
42
  lazyConnect: true,
43
- ...(config.noRetry ? {} : { retryStrategy: () => connectionState_1.RETRY_INTERVAL_MS }),
44
- });
43
+ // ioredis retries unreachable sentinels forever, so connect() never rejects and --no-retry
44
+ // would hang. The retrying path keeps ioredis's own backoff, which re-resolves a promoted
45
+ // master faster than a flat interval would.
46
+ ...(config.noRetry
47
+ ? { sentinelRetryStrategy: () => null }
48
+ : { retryStrategy: () => connectionState_1.RETRY_INTERVAL_MS }),
49
+ ...config.connection.options,
50
+ };
51
+ const client = config.connection.mode === 'url'
52
+ ? new ioredis_1.Redis(config.connection.url, redisOptions)
53
+ : new ioredis_1.Redis(redisOptions);
54
+ const redisLabel = (0, connectionState_1.describeConnection)(config.connection);
45
55
  let attemptError;
46
56
  client.on('error', (error) => {
47
57
  attemptError !== null && attemptError !== void 0 ? attemptError : (attemptError = error);
48
58
  });
59
+ // For the same reason, the first error rather than connect() is what releases startup onto
60
+ // the diagnostic page.
61
+ const firstError = new Promise((_, reject) => client.once('error', reject));
62
+ firstError.catch(() => undefined);
49
63
  if (!isLoopbackHost(config.host) && !config.auth) {
50
64
  log.warn(`Warning: bull-board is listening on ${config.host}, which accepts connections from ` +
51
65
  'outside this machine, with no --user/--password set. Anyone who can reach it can ' +
@@ -115,7 +129,7 @@ async function run(config, log = console, { beforeReady, } = {}) {
115
129
  await client.connect();
116
130
  }
117
131
  catch (error) {
118
- throw new Error(`Could not connect to Redis at ${(0, connectionState_1.maskRedisUrl)(config.redisUrl)}: ${(0, describeError_1.describeError)(attemptError !== null && attemptError !== void 0 ? attemptError : error)}`);
132
+ throw new Error(`Could not connect to Redis at ${redisLabel}: ${(0, describeError_1.describeError)(attemptError !== null && attemptError !== void 0 ? attemptError : error)}`);
119
133
  }
120
134
  const count = await scan();
121
135
  await startHistory();
@@ -135,7 +149,7 @@ async function run(config, log = console, { beforeReady, } = {}) {
135
149
  };
136
150
  beforeReady === null || beforeReady === void 0 ? void 0 : beforeReady(close);
137
151
  log.log(`bull-board listening on ${server.url}`);
138
- log.log(`Redis: ${(0, connectionState_1.maskRedisUrl)(config.redisUrl)}`);
152
+ log.log(`Redis: ${redisLabel}`);
139
153
  log.log(`Prefix: ${config.prefixes.join(', ')}`);
140
154
  logIfIdle(count);
141
155
  scheduleRescan();
@@ -143,7 +157,7 @@ async function run(config, log = console, { beforeReady, } = {}) {
143
157
  }
144
158
  let state = {
145
159
  status: 'connecting',
146
- redisUrl: (0, connectionState_1.maskRedisUrl)(config.redisUrl),
160
+ redis: redisLabel,
147
161
  attempts: 0,
148
162
  };
149
163
  const getState = () => state;
@@ -176,13 +190,13 @@ async function run(config, log = console, { beforeReady, } = {}) {
176
190
  }
177
191
  state = {
178
192
  status: 'unavailable',
179
- redisUrl: (0, connectionState_1.maskRedisUrl)(config.redisUrl),
193
+ redis: redisLabel,
180
194
  attempts: state.attempts + 1,
181
195
  lastError: message,
182
196
  };
183
197
  if (!everFailed) {
184
198
  everFailed = true;
185
- log.warn(`Could not connect to Redis at ${(0, connectionState_1.maskRedisUrl)(config.redisUrl)}: ${message}`);
199
+ log.warn(`Could not connect to Redis at ${redisLabel}: ${message}`);
186
200
  log.warn(`Serving a diagnostic page at ${server.url} and retrying every ` +
187
201
  `${connectionState_1.RETRY_INTERVAL_MS / 1000}s. Pass --no-retry to exit instead of waiting.`);
188
202
  }
@@ -201,7 +215,7 @@ async function run(config, log = console, { beforeReady, } = {}) {
201
215
  return;
202
216
  state = {
203
217
  status: 'connected',
204
- redisUrl: (0, connectionState_1.maskRedisUrl)(config.redisUrl),
218
+ redis: redisLabel,
205
219
  attempts: state.attempts,
206
220
  };
207
221
  scheduleRescan();
@@ -221,7 +235,7 @@ async function run(config, log = console, { beforeReady, } = {}) {
221
235
  const message = error.message;
222
236
  state = {
223
237
  status: 'degraded',
224
- redisUrl: (0, connectionState_1.maskRedisUrl)(config.redisUrl),
238
+ redis: redisLabel,
225
239
  attempts: state.attempts,
226
240
  lastError: message,
227
241
  };
@@ -234,7 +248,9 @@ async function run(config, log = console, { beforeReady, } = {}) {
234
248
  return inFlight;
235
249
  };
236
250
  try {
237
- await client.connect();
251
+ const connecting = client.connect();
252
+ connecting.catch(() => undefined);
253
+ await Promise.race([connecting, firstError]);
238
254
  }
239
255
  catch (error) {
240
256
  markUnavailable((0, describeError_1.describeError)(attemptError !== null && attemptError !== void 0 ? attemptError : error));
@@ -243,7 +259,7 @@ async function run(config, log = console, { beforeReady, } = {}) {
243
259
  await becomeConnected(true);
244
260
  }
245
261
  log.log(`bull-board listening on ${server.url}`);
246
- log.log(`Redis: ${(0, connectionState_1.maskRedisUrl)(config.redisUrl)}`);
262
+ log.log(`Redis: ${redisLabel}`);
247
263
  log.log(`Prefix: ${config.prefixes.join(', ')}`);
248
264
  if (deferredIdleCount !== undefined)
249
265
  logIfIdle(deferredIdleCount);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bull-board/cli",
3
- "version": "9.7.0",
3
+ "version": "9.8.0",
4
4
  "description": "Run the bull-board dashboard against a Redis instance from the command line.",
5
5
  "keywords": [
6
6
  "bull",
@@ -38,9 +38,9 @@
38
38
  "test": "jest"
39
39
  },
40
40
  "dependencies": {
41
- "@bull-board/api": "9.7.0",
42
- "@bull-board/express": "9.7.0",
43
- "@bull-board/metrics": "9.7.0",
41
+ "@bull-board/api": "9.8.0",
42
+ "@bull-board/express": "9.8.0",
43
+ "@bull-board/metrics": "9.8.0",
44
44
  "bull": "^4.16.5",
45
45
  "bullmq": "^5.81.3",
46
46
  "express": "^5.2.1",
@@ -49,8 +49,10 @@
49
49
  "devDependencies": {
50
50
  "@types/express": "^5.0.6",
51
51
  "@types/jest": "^30.0.0",
52
+ "@types/redis-parser": "^3.0.3",
52
53
  "@types/supertest": "^7.2.1",
53
54
  "jest": "^30.4.2",
55
+ "redis-parser": "^3.0.0",
54
56
  "supertest": "^7.2.2",
55
57
  "ts-jest": "^29.4.12",
56
58
  "typescript": "^5.9.3"