@opens/bullmq 1.0.0 → 1.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/index.d.ts CHANGED
@@ -10,8 +10,8 @@ declare class BullMQWrapper {
10
10
  taskName: string;
11
11
  defaultOptions: BullMQ.DefaultJobOptions;
12
12
  connection?: Redis;
13
- up?: BullMQ.Processor;
14
- down?: BullMQ.Processor;
13
+ up?: (data: any, job: BullMQ.Job) => Promise<void>;
14
+ down?: (data: any, job: BullMQ.Job, err: unknown) => Promise<void>;
15
15
  concurrency?: number;
16
16
  removeOnCompleteAge?: number;
17
17
  removeOnCompleteCount?: number;
@@ -26,8 +26,8 @@ declare class BullMQWrapper {
26
26
  } | undefined;
27
27
  createWorker(params: {
28
28
  taskName: string;
29
- up: BullMQ.Processor;
30
- down?: BullMQ.Processor;
29
+ up: (data: any, job: BullMQ.Job) => Promise<void>;
30
+ down?: (data: any, job: BullMQ.Job, err: unknown) => Promise<void>;
31
31
  connection?: Redis;
32
32
  concurrency: number;
33
33
  removeOnCompleteAge?: number;
package/dist/index.js CHANGED
@@ -76,9 +76,9 @@ var BullMQWrapper = class {
76
76
  taskName,
77
77
  async (job) => {
78
78
  try {
79
- await up(job);
79
+ await up(job.data, job);
80
80
  } catch (error) {
81
- if (down) await down(job).catch(console.error);
81
+ if (down) await down(job.data, job, error);
82
82
  throw error;
83
83
  } finally {
84
84
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/wrapper.ts","../src/default-connection.ts"],"sourcesContent":["import { BullMQWrapper } from './wrapper';\nimport { DefaultConnection } from './default-connection';\nimport BullMQ from 'bullmq';\nexport const bullmq = new BullMQWrapper(DefaultConnection.getInstance(), BullMQ);\n","import BullMQ from 'bullmq';\nimport { Redis } from 'ioredis';\n\nexport class BullMQWrapper {\n private taskQueues: Map<string, BullMQ.Queue> = new Map();\n\n constructor(private defaultConnection: Redis, private bullMQ: typeof BullMQ) {}\n\n public createTask(params: {\n taskName: string;\n defaultOptions: BullMQ.DefaultJobOptions;\n connection?: Redis;\n up?: BullMQ.Processor;\n down?: BullMQ.Processor;\n concurrency?: number;\n removeOnCompleteAge?: number;\n removeOnCompleteCount?: number;\n removeOnFailAge?: number;\n removeOnFailCount?: number;\n }) {\n const { taskName, up, down, defaultOptions, connection, concurrency } = params;\n if (this.taskQueues.has(taskName)) return;\n\n const queue = new this.bullMQ.Queue(taskName, {\n connection: this.defaultConnection ?? connection,\n defaultJobOptions: defaultOptions,\n });\n this.taskQueues.set(taskName, queue);\n\n if (!up) return { queue };\n\n const { worker } = this.createWorker({\n up,\n down,\n concurrency: concurrency ?? 1,\n ...params,\n });\n return { queue, worker };\n }\n\n public createWorker(params: {\n taskName: string;\n up: BullMQ.Processor;\n down?: BullMQ.Processor;\n connection?: Redis;\n concurrency: number;\n removeOnCompleteAge?: number;\n removeOnCompleteCount?: number;\n removeOnFailAge?: number;\n removeOnFailCount?: number;\n onError?: Function;\n }) {\n const {\n taskName,\n up,\n down,\n concurrency,\n connection,\n removeOnFailCount,\n removeOnCompleteAge,\n removeOnCompleteCount,\n removeOnFailAge,\n } = params;\n const registeredQueue = this.taskQueues.get(taskName);\n if (!registeredQueue) throw new Error(`No task queue for [${taskName}] found`);\n\n const worker = new this.bullMQ.Worker(\n taskName,\n async (job) => {\n try {\n await up(job);\n } catch (error) {\n if (down) await down(job).catch(console.error);\n throw error;\n } finally {\n }\n },\n {\n concurrency,\n connection: connection ?? this.defaultConnection,\n removeOnComplete: {\n age: removeOnCompleteAge ?? 0,\n count: removeOnCompleteCount ?? 0,\n },\n removeOnFail: {\n age: removeOnFailAge ?? 0,\n count: removeOnFailCount ?? 0,\n },\n },\n );\n\n return { worker };\n }\n\n public async publishTask(params: { taskName: string; taskData: any; taskOptions: BullMQ.JobsOptions }) {\n const queue = this.taskQueues.get(params.taskName);\n if (!queue) return null;\n const job = await queue.add('', params.taskData, params.taskOptions);\n return job.asJSON();\n }\n\n public getTaskCount() {\n return this.taskQueues.size;\n }\n}\n","import { Redis } from 'ioredis';\nexport class DefaultConnection {\n static getInstance() {\n const host = process.env.REDIS_HOST;\n const port = process.env.PORT;\n if (!host) throw new Error('Environment variable ${REDIS_HOST} isnt set');\n if (!port) throw new Error('Environment variable ${REDIS_PORT} isnt set');\n return new Redis({ host, port: parseInt(port), maxRetriesPerRequest: null });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACGO,IAAM,gBAAN,MAAoB;AAAA,EAGzB,YAAoB,mBAAkC,QAAuB;AAAzD;AAAkC;AAAA,EAAwB;AAAA,EAFtE,aAAwC,oBAAI,IAAI;AAAA,EAIjD,WAAW,QAWf;AACD,UAAM,EAAE,UAAU,IAAI,MAAM,gBAAgB,YAAY,YAAY,IAAI;AACxE,QAAI,KAAK,WAAW,IAAI,QAAQ,EAAG;AAEnC,UAAM,QAAQ,IAAI,KAAK,OAAO,MAAM,UAAU;AAAA,MAC5C,YAAY,KAAK,qBAAqB;AAAA,MACtC,mBAAmB;AAAA,IACrB,CAAC;AACD,SAAK,WAAW,IAAI,UAAU,KAAK;AAEnC,QAAI,CAAC,GAAI,QAAO,EAAE,MAAM;AAExB,UAAM,EAAE,OAAO,IAAI,KAAK,aAAa;AAAA,MACnC;AAAA,MACA;AAAA,MACA,aAAa,eAAe;AAAA,MAC5B,GAAG;AAAA,IACL,CAAC;AACD,WAAO,EAAE,OAAO,OAAO;AAAA,EACzB;AAAA,EAEO,aAAa,QAWjB;AACD,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM,kBAAkB,KAAK,WAAW,IAAI,QAAQ;AACpD,QAAI,CAAC,gBAAiB,OAAM,IAAI,MAAM,sBAAsB,QAAQ,SAAS;AAE7E,UAAM,SAAS,IAAI,KAAK,OAAO;AAAA,MAC7B;AAAA,MACA,OAAO,QAAQ;AACb,YAAI;AACF,gBAAM,GAAG,GAAG;AAAA,QACd,SAAS,OAAO;AACd,cAAI,KAAM,OAAM,KAAK,GAAG,EAAE,MAAM,QAAQ,KAAK;AAC7C,gBAAM;AAAA,QACR,UAAE;AAAA,QACF;AAAA,MACF;AAAA,MACA;AAAA,QACE;AAAA,QACA,YAAY,cAAc,KAAK;AAAA,QAC/B,kBAAkB;AAAA,UAChB,KAAK,uBAAuB;AAAA,UAC5B,OAAO,yBAAyB;AAAA,QAClC;AAAA,QACA,cAAc;AAAA,UACZ,KAAK,mBAAmB;AAAA,UACxB,OAAO,qBAAqB;AAAA,QAC9B;AAAA,MACF;AAAA,IACF;AAEA,WAAO,EAAE,OAAO;AAAA,EAClB;AAAA,EAEA,MAAa,YAAY,QAA8E;AACrG,UAAM,QAAQ,KAAK,WAAW,IAAI,OAAO,QAAQ;AACjD,QAAI,CAAC,MAAO,QAAO;AACnB,UAAM,MAAM,MAAM,MAAM,IAAI,IAAI,OAAO,UAAU,OAAO,WAAW;AACnE,WAAO,IAAI,OAAO;AAAA,EACpB;AAAA,EAEO,eAAe;AACpB,WAAO,KAAK,WAAW;AAAA,EACzB;AACF;;;ACxGA,qBAAsB;AACf,IAAM,oBAAN,MAAwB;AAAA,EAC7B,OAAO,cAAc;AACnB,UAAM,OAAO,QAAQ,IAAI;AACzB,UAAM,OAAO,QAAQ,IAAI;AACzB,QAAI,CAAC,KAAM,OAAM,IAAI,MAAM,6CAA6C;AACxE,QAAI,CAAC,KAAM,OAAM,IAAI,MAAM,6CAA6C;AACxE,WAAO,IAAI,qBAAM,EAAE,MAAM,MAAM,SAAS,IAAI,GAAG,sBAAsB,KAAK,CAAC;AAAA,EAC7E;AACF;;;AFPA,oBAAmB;AACZ,IAAM,SAAS,IAAI,cAAc,kBAAkB,YAAY,GAAG,cAAAA,OAAM;","names":["BullMQ"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/wrapper.ts","../src/default-connection.ts"],"sourcesContent":["import { BullMQWrapper } from './wrapper';\nimport { DefaultConnection } from './default-connection';\nimport BullMQ from 'bullmq';\nexport const bullmq = new BullMQWrapper(DefaultConnection.getInstance(), BullMQ);\n","import BullMQ from 'bullmq';\nimport { Redis } from 'ioredis';\n\nexport class BullMQWrapper {\n private taskQueues: Map<string, BullMQ.Queue> = new Map();\n\n constructor(private defaultConnection: Redis, private bullMQ: typeof BullMQ) {}\n\n public createTask(params: {\n taskName: string;\n defaultOptions: BullMQ.DefaultJobOptions;\n connection?: Redis;\n up?: (data: any, job: BullMQ.Job) => Promise<void>;\n down?: (data: any, job: BullMQ.Job, err: unknown) => Promise<void>;\n concurrency?: number;\n removeOnCompleteAge?: number;\n removeOnCompleteCount?: number;\n removeOnFailAge?: number;\n removeOnFailCount?: number;\n }) {\n const { taskName, up, down, defaultOptions, connection, concurrency } = params;\n if (this.taskQueues.has(taskName)) return;\n\n const queue = new this.bullMQ.Queue(taskName, {\n connection: this.defaultConnection ?? connection,\n defaultJobOptions: defaultOptions,\n });\n this.taskQueues.set(taskName, queue);\n\n if (!up) return { queue };\n\n const { worker } = this.createWorker({\n up,\n down,\n concurrency: concurrency ?? 1,\n ...params,\n });\n return { queue, worker };\n }\n\n public createWorker(params: {\n taskName: string;\n up: (data: any, job: BullMQ.Job) => Promise<void>;\n down?: (data: any, job: BullMQ.Job, err: unknown) => Promise<void>;\n connection?: Redis;\n concurrency: number;\n removeOnCompleteAge?: number;\n removeOnCompleteCount?: number;\n removeOnFailAge?: number;\n removeOnFailCount?: number;\n onError?: Function;\n }) {\n const {\n taskName,\n up,\n down,\n concurrency,\n connection,\n removeOnFailCount,\n removeOnCompleteAge,\n removeOnCompleteCount,\n removeOnFailAge,\n } = params;\n const registeredQueue = this.taskQueues.get(taskName);\n if (!registeredQueue) throw new Error(`No task queue for [${taskName}] found`);\n\n const worker = new this.bullMQ.Worker(\n taskName,\n async (job) => {\n try {\n await up(job.data, job);\n } catch (error) {\n if (down) await down(job.data, job, error);\n throw error;\n } finally {\n }\n },\n {\n concurrency,\n connection: connection ?? this.defaultConnection,\n removeOnComplete: {\n age: removeOnCompleteAge ?? 0,\n count: removeOnCompleteCount ?? 0,\n },\n removeOnFail: {\n age: removeOnFailAge ?? 0,\n count: removeOnFailCount ?? 0,\n },\n },\n );\n\n return { worker };\n }\n\n public async publishTask(params: { taskName: string; taskData: any; taskOptions: BullMQ.JobsOptions }) {\n const queue = this.taskQueues.get(params.taskName);\n if (!queue) return null;\n const job = await queue.add('', params.taskData, params.taskOptions);\n return job.asJSON();\n }\n\n public getTaskCount() {\n return this.taskQueues.size;\n }\n}\n","import { Redis } from 'ioredis';\nexport class DefaultConnection {\n static getInstance() {\n const host = process.env.REDIS_HOST;\n const port = process.env.PORT;\n if (!host) throw new Error('Environment variable ${REDIS_HOST} isnt set');\n if (!port) throw new Error('Environment variable ${REDIS_PORT} isnt set');\n return new Redis({ host, port: parseInt(port), maxRetriesPerRequest: null });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACGO,IAAM,gBAAN,MAAoB;AAAA,EAGzB,YAAoB,mBAAkC,QAAuB;AAAzD;AAAkC;AAAA,EAAwB;AAAA,EAFtE,aAAwC,oBAAI,IAAI;AAAA,EAIjD,WAAW,QAWf;AACD,UAAM,EAAE,UAAU,IAAI,MAAM,gBAAgB,YAAY,YAAY,IAAI;AACxE,QAAI,KAAK,WAAW,IAAI,QAAQ,EAAG;AAEnC,UAAM,QAAQ,IAAI,KAAK,OAAO,MAAM,UAAU;AAAA,MAC5C,YAAY,KAAK,qBAAqB;AAAA,MACtC,mBAAmB;AAAA,IACrB,CAAC;AACD,SAAK,WAAW,IAAI,UAAU,KAAK;AAEnC,QAAI,CAAC,GAAI,QAAO,EAAE,MAAM;AAExB,UAAM,EAAE,OAAO,IAAI,KAAK,aAAa;AAAA,MACnC;AAAA,MACA;AAAA,MACA,aAAa,eAAe;AAAA,MAC5B,GAAG;AAAA,IACL,CAAC;AACD,WAAO,EAAE,OAAO,OAAO;AAAA,EACzB;AAAA,EAEO,aAAa,QAWjB;AACD,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,UAAM,kBAAkB,KAAK,WAAW,IAAI,QAAQ;AACpD,QAAI,CAAC,gBAAiB,OAAM,IAAI,MAAM,sBAAsB,QAAQ,SAAS;AAE7E,UAAM,SAAS,IAAI,KAAK,OAAO;AAAA,MAC7B;AAAA,MACA,OAAO,QAAQ;AACb,YAAI;AACF,gBAAM,GAAG,IAAI,MAAM,GAAG;AAAA,QACxB,SAAS,OAAO;AACd,cAAI,KAAM,OAAM,KAAK,IAAI,MAAM,KAAK,KAAK;AACzC,gBAAM;AAAA,QACR,UAAE;AAAA,QACF;AAAA,MACF;AAAA,MACA;AAAA,QACE;AAAA,QACA,YAAY,cAAc,KAAK;AAAA,QAC/B,kBAAkB;AAAA,UAChB,KAAK,uBAAuB;AAAA,UAC5B,OAAO,yBAAyB;AAAA,QAClC;AAAA,QACA,cAAc;AAAA,UACZ,KAAK,mBAAmB;AAAA,UACxB,OAAO,qBAAqB;AAAA,QAC9B;AAAA,MACF;AAAA,IACF;AAEA,WAAO,EAAE,OAAO;AAAA,EAClB;AAAA,EAEA,MAAa,YAAY,QAA8E;AACrG,UAAM,QAAQ,KAAK,WAAW,IAAI,OAAO,QAAQ;AACjD,QAAI,CAAC,MAAO,QAAO;AACnB,UAAM,MAAM,MAAM,MAAM,IAAI,IAAI,OAAO,UAAU,OAAO,WAAW;AACnE,WAAO,IAAI,OAAO;AAAA,EACpB;AAAA,EAEO,eAAe;AACpB,WAAO,KAAK,WAAW;AAAA,EACzB;AACF;;;ACxGA,qBAAsB;AACf,IAAM,oBAAN,MAAwB;AAAA,EAC7B,OAAO,cAAc;AACnB,UAAM,OAAO,QAAQ,IAAI;AACzB,UAAM,OAAO,QAAQ,IAAI;AACzB,QAAI,CAAC,KAAM,OAAM,IAAI,MAAM,6CAA6C;AACxE,QAAI,CAAC,KAAM,OAAM,IAAI,MAAM,6CAA6C;AACxE,WAAO,IAAI,qBAAM,EAAE,MAAM,MAAM,SAAS,IAAI,GAAG,sBAAsB,KAAK,CAAC;AAAA,EAC7E;AACF;;;AFPA,oBAAmB;AACZ,IAAM,SAAS,IAAI,cAAc,kBAAkB,YAAY,GAAG,cAAAA,OAAM;","names":["BullMQ"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opens/bullmq",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "A wrapper around bullmq",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",