@lokalise/fastify-extras 28.1.1 → 29.0.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/dist/plugins/bull-mq-metrics/ObservableQueue.d.ts +1 -1
- package/dist/plugins/bull-mq-metrics/ObservableQueue.js +11 -2
- package/dist/plugins/bull-mq-metrics/ObservableQueue.js.map +1 -1
- package/dist/plugins/bull-mq-metrics/queueDiscoverers.js +10 -3
- package/dist/plugins/bull-mq-metrics/queueDiscoverers.js.map +1 -1
- package/package.json +3 -3
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { FastifyBaseLogger } from 'fastify';
|
|
2
1
|
import type { RedisConfig } from '@lokalise/node-core';
|
|
2
|
+
import type { FastifyBaseLogger } from 'fastify';
|
|
3
3
|
import type { Metrics } from './MetricsCollector.js';
|
|
4
4
|
export declare class ObservableQueue {
|
|
5
5
|
private readonly queue;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { sanitizeRedisConfig } from '@lokalise/background-jobs-common';
|
|
1
2
|
import { Queue, QueueEvents } from 'bullmq';
|
|
2
3
|
export class ObservableQueue {
|
|
3
4
|
queue;
|
|
@@ -24,8 +25,16 @@ export class ObservableQueue {
|
|
|
24
25
|
}
|
|
25
26
|
}
|
|
26
27
|
constructor(name, redisConfig, metrics, logger) {
|
|
27
|
-
|
|
28
|
-
this.
|
|
28
|
+
const sanitizedConfig = sanitizeRedisConfig(redisConfig);
|
|
29
|
+
this.queue = new Queue(name, {
|
|
30
|
+
connection: sanitizedConfig,
|
|
31
|
+
prefix: redisConfig.keyPrefix,
|
|
32
|
+
});
|
|
33
|
+
this.events = new QueueEvents(name, {
|
|
34
|
+
connection: sanitizedConfig,
|
|
35
|
+
prefix: redisConfig.keyPrefix,
|
|
36
|
+
autorun: true,
|
|
37
|
+
});
|
|
29
38
|
this.metrics = metrics;
|
|
30
39
|
this.logger = logger;
|
|
31
40
|
this.events.on('failed', async ({ jobId }) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObservableQueue.js","sourceRoot":"","sources":["../../../lib/plugins/bull-mq-metrics/ObservableQueue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"ObservableQueue.js","sourceRoot":"","sources":["../../../lib/plugins/bull-mq-metrics/ObservableQueue.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { backgroundJobProcessorGetActiveQueueIds
|
|
1
|
+
import { backgroundJobProcessorGetActiveQueueIds } from '@lokalise/background-jobs-common';
|
|
2
2
|
import { PromisePool } from '@supercharge/promise-pool';
|
|
3
|
+
import { Redis } from 'ioredis';
|
|
3
4
|
const QUEUE_DISCOVERY_CONCURRENCY = 3;
|
|
4
5
|
export class AbstractRedisBasedQueueDiscoverer {
|
|
5
6
|
redisConfigs;
|
|
@@ -24,7 +25,7 @@ export class RedisBasedQueueDiscoverer extends AbstractRedisBasedQueueDiscoverer
|
|
|
24
25
|
this.queuesPrefix = queuesPrefix;
|
|
25
26
|
}
|
|
26
27
|
async discoverQueuesForInstance(redisConfig) {
|
|
27
|
-
const redis =
|
|
28
|
+
const redis = new Redis(redisConfig);
|
|
28
29
|
const scanStream = redis.scanStream({
|
|
29
30
|
match: `${this.queuesPrefix}:*:meta`,
|
|
30
31
|
});
|
|
@@ -33,11 +34,17 @@ export class RedisBasedQueueDiscoverer extends AbstractRedisBasedQueueDiscoverer
|
|
|
33
34
|
// biome-ignore lint/complexity/noForEach: <explanation>
|
|
34
35
|
;
|
|
35
36
|
chunk
|
|
36
|
-
.map((key) =>
|
|
37
|
+
.map((key) => {
|
|
38
|
+
const parts = key.split(':');
|
|
39
|
+
if (parts.length < 3)
|
|
40
|
+
return undefined;
|
|
41
|
+
return parts[parts.length - 2]; // we need the part before to meta
|
|
42
|
+
})
|
|
37
43
|
.filter((value) => !!value)
|
|
38
44
|
// biome-ignore lint/style/noNonNullAssertion: undefined removed in previous filter
|
|
39
45
|
.forEach((queue) => queues.add(queue));
|
|
40
46
|
}
|
|
47
|
+
await redis.quit();
|
|
41
48
|
return Array.from(queues)
|
|
42
49
|
.sort()
|
|
43
50
|
.map((queueName) => ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queueDiscoverers.js","sourceRoot":"","sources":["../../../lib/plugins/bull-mq-metrics/queueDiscoverers.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"queueDiscoverers.js","sourceRoot":"","sources":["../../../lib/plugins/bull-mq-metrics/queueDiscoverers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uCAAuC,EAAE,MAAM,kCAAkC,CAAA;AAE1F,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAW/B,MAAM,2BAA2B,GAAG,CAAC,CAAA;AAErC,MAAM,OAAgB,iCAAiC;IAClC,YAAY,CAAe;IAE9C,YAAY,YAA2B;QACrC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;IAClC,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,eAAe,CAAC,2BAA2B,CAAC;aACvF,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC;aACtB,OAAO,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,IAAI,CAAC,yBAAyB,CAAC,aAAa,CAAC,CAAC,CAAA;QAE5E,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,4CAA4C;YAC5C,MAAM,MAAM,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QAED,OAAO,OAAO,CAAC,IAAI,EAAE,CAAA;IACvB,CAAC;CAGF;AAED,MAAM,OAAO,yBAA0B,SAAQ,iCAAiC;IAC7D,YAAY,CAAQ;IAErC,YAAY,YAA2B,EAAE,YAAoB;QAC3D,KAAK,CAAC,YAAY,CAAC,CAAA;QACnB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;IAClC,CAAC;IAES,KAAK,CAAC,yBAAyB,CAAC,WAAwB;QAChE,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,WAAW,CAAC,CAAA;QACpC,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;YAClC,KAAK,EAAE,GAAG,IAAI,CAAC,YAAY,SAAS;SACrC,CAAC,CAAA;QAEF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAA;QAChC,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;YACrC,wDAAwD;YACxD,CAAC;YAAC,KAAkB;iBACjB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBACX,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBAC5B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;oBAAE,OAAO,SAAS,CAAA;gBACtC,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA,CAAC,kCAAkC;YACnE,CAAC,CAAC;iBACD,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC3B,mFAAmF;iBAClF,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAM,CAAC,CAAC,CAAA;QAC3C,CAAC;QACD,MAAM,KAAK,CAAC,IAAI,EAAE,CAAA;QAElB,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;aACtB,IAAI,EAAE;aACN,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YACnB,WAAW;YACX,SAAS;SACV,CAAC,CAAC,CAAA;IACP,CAAC;CACF;AAED,MAAM,OAAO,kCAAmC,SAAQ,iCAAiC;IAC7E,KAAK,CAAC,yBAAyB,CAAC,WAAwB;QAChE,OAAO,uCAAuC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAC9E,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YAC7B,WAAW;YACX,SAAS;SACV,CAAC,CAAC,CACJ,CAAA;IACH,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lokalise/fastify-extras",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "29.0.1",
|
|
4
4
|
"description": "Opinionated set of fastify plugins, commonly used in Lokalise",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Lokalise",
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
"@amplitude/analytics-types": "^2.9.2",
|
|
63
63
|
"@biomejs/biome": "^1.9.4",
|
|
64
64
|
"@lokalise/backend-http-client": "^7.0.0",
|
|
65
|
-
"@lokalise/background-jobs-common": "^
|
|
65
|
+
"@lokalise/background-jobs-common": "^14.0.2",
|
|
66
66
|
"@lokalise/biome-config": "^2.0.0",
|
|
67
67
|
"@lokalise/node-core": "^14.1.0",
|
|
68
68
|
"@lokalise/tsconfig": "^2.0.0",
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
"fastify": "^5.4.0",
|
|
75
75
|
"fastify-type-provider-zod": "^5.0.1",
|
|
76
76
|
"ioredis": "^5.6.1",
|
|
77
|
-
"newrelic": "
|
|
77
|
+
"newrelic": "13.2.1",
|
|
78
78
|
"pino": "^9.7.0",
|
|
79
79
|
"pino-pretty": "^13.0.0",
|
|
80
80
|
"rimraf": "^6.0.1",
|