@tyravel/queue 0.2.0 → 0.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.
@@ -1,8 +1,9 @@
1
1
  import type { DatabaseConnection } from '@tyravel/database';
2
2
  import type { Job } from './job.js';
3
3
  import type { QueueContract } from './queue-contract.js';
4
+ import type { WorkerQueue } from './worker-queue.js';
4
5
  import type { DatabaseQueueConnectionConfig, QueueJobRecord, SerializedJobPayload } from './types.js';
5
- export declare class DatabaseQueue implements QueueContract {
6
+ export declare class DatabaseQueue implements QueueContract, WorkerQueue {
6
7
  private readonly connection;
7
8
  private readonly table;
8
9
  private readonly retryAfter;
@@ -1 +1 @@
1
- {"version":3,"file":"database-queue.d.ts","sourceRoot":"","sources":["../src/database-queue.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAEpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EACV,6BAA6B,EAC7B,cAAc,EACd,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAYpB,qBAAa,aAAc,YAAW,aAAa;IAK/C,OAAO,CAAC,QAAQ,CAAC,UAAU;IAJ7B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAGjB,UAAU,EAAE,kBAAkB,EAC/C,MAAM,GAAE,6BAAsD;IAM1D,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAIlD,OAAO,CAAC,OAAO,EAAE,oBAAoB,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAc1E,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAezE,GAAG,CAAC,KAAK,SAAY,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IA2BtD,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpC,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,SAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAe1D,MAAM,CAAC,MAAM,EAAE,cAAc;IAI7B,aAAa,IAAI,MAAM;IAIvB,OAAO,CAAC,YAAY;CAGrB"}
1
+ {"version":3,"file":"database-queue.d.ts","sourceRoot":"","sources":["../src/database-queue.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAEpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EACV,6BAA6B,EAC7B,cAAc,EACd,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAYpB,qBAAa,aAAc,YAAW,aAAa,EAAE,WAAW;IAK5D,OAAO,CAAC,QAAQ,CAAC,UAAU;IAJ7B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAGjB,UAAU,EAAE,kBAAkB,EAC/C,MAAM,GAAE,6BAAsD;IAM1D,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAIlD,OAAO,CAAC,OAAO,EAAE,oBAAoB,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAc1E,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAezE,GAAG,CAAC,KAAK,SAAY,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IA2BtD,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpC,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,SAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAe1D,MAAM,CAAC,MAAM,EAAE,cAAc;IAI7B,aAAa,IAAI,MAAM;IAIvB,OAAO,CAAC,YAAY;CAGrB"}
@@ -1 +1 @@
1
- {"version":3,"file":"database-queue.js","sourceRoot":"","sources":["../src/database-queue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"database-queue.js","sourceRoot":"","sources":["../src/database-queue.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import type { Container } from '@tyravel/container';
2
2
  import type { DatabaseManager } from '@tyravel/database';
3
+ import type { RedisManager } from '@tyravel/redis';
3
4
  import { Dispatcher } from './dispatcher.js';
4
5
  import { JobRegistry } from './registry.js';
5
6
  import { QueueManager } from './queue-manager.js';
@@ -9,6 +10,7 @@ export declare function createQueueStack(options: {
9
10
  config: QueueConfig;
10
11
  registry: JobRegistry;
11
12
  database?: DatabaseManager;
13
+ redis?: RedisManager;
12
14
  container?: Container;
13
15
  }): {
14
16
  manager: QueueManager;
@@ -17,6 +19,9 @@ export declare function createQueueStack(options: {
17
19
  registry: JobRegistry;
18
20
  };
19
21
  export { DatabaseQueue } from './database-queue.js';
22
+ export { RedisQueue } from './redis-queue.js';
23
+ export { isWorkerQueue } from './worker-queue.js';
24
+ export type { WorkerQueue } from './worker-queue.js';
20
25
  export { Dispatcher } from './dispatcher.js';
21
26
  export { FailedJobRepository, formatJobException, newFailedJobUuid, } from './failed-job-repository.js';
22
27
  export { Job } from './job.js';
@@ -26,6 +31,6 @@ export type { QueueContract } from './queue-contract.js';
26
31
  export { QueueManager } from './queue-manager.js';
27
32
  export { QueueProcessor } from './queue-processor.js';
28
33
  export { SyncQueue } from './sync-queue.js';
29
- export type { DatabaseQueueConnectionConfig, FailedJobRecord, FailedJobsConfig, QueueConfig, QueueConnectionConfig, QueueJobRecord, SerializedJobPayload, SyncQueueConnectionConfig, } from './types.js';
34
+ export type { DatabaseQueueConnectionConfig, FailedJobRecord, FailedJobsConfig, QueueConfig, QueueConnectionConfig, QueueJobRecord, SerializedJobPayload, RedisQueueConnectionConfig, SyncQueueConnectionConfig, } from './types.js';
30
35
  export { QueueWorker } from './worker.js';
31
36
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG9C,wBAAgB,gBAAgB,CAAC,OAAO,EAAE;IACxC,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,WAAW,CAAC;IACtB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,GAAG;IACF,OAAO,EAAE,YAAY,CAAC;IACtB,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,EAAE,cAAc,CAAC;IAC1B,QAAQ,EAAE,WAAW,CAAC;CACvB,CAQA;AAED,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC1E,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EACV,6BAA6B,EAC7B,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,qBAAqB,EACrB,cAAc,EACd,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG9C,wBAAgB,gBAAgB,CAAC,OAAO,EAAE;IACxC,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,WAAW,CAAC;IACtB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,GAAG;IACF,OAAO,EAAE,YAAY,CAAC;IACtB,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,EAAE,cAAc,CAAC;IAC1B,QAAQ,EAAE,WAAW,CAAC;CACvB,CAQA;AAED,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC1E,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EACV,6BAA6B,EAC7B,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,qBAAqB,EACrB,cAAc,EACd,oBAAoB,EACpB,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -5,12 +5,14 @@ import { QueueWorker } from './worker.js';
5
5
  export function createQueueStack(options) {
6
6
  const registry = options.registry;
7
7
  const worker = new QueueWorker(registry, options.container);
8
- const manager = new QueueManager(options.config, worker, options.database);
8
+ const manager = new QueueManager(options.config, worker, options.database, options.redis);
9
9
  const dispatcher = new Dispatcher(manager.connection());
10
10
  const processor = new QueueProcessor(manager, registry, worker);
11
11
  return { manager, dispatcher, processor, registry };
12
12
  }
13
13
  export { DatabaseQueue } from './database-queue.js';
14
+ export { RedisQueue } from './redis-queue.js';
15
+ export { isWorkerQueue } from './worker-queue.js';
14
16
  export { Dispatcher } from './dispatcher.js';
15
17
  export { FailedJobRepository, formatJobException, newFailedJobUuid, } from './failed-job-repository.js';
16
18
  export { Job } from './job.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,UAAU,gBAAgB,CAAC,OAKhC;IAMC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3E,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAEhE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AACtD,CAAC;AAED,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE1E,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAW5C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,UAAU,gBAAgB,CAAC,OAMhC;IAMC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC1F,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAEhE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AACtD,CAAC;AAED,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE1E,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAY5C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { DatabaseManager } from '@tyravel/database';
2
+ import type { RedisManager } from '@tyravel/redis';
2
3
  import type { QueueContract } from './queue-contract.js';
3
4
  import type { QueueConfig } from './types.js';
4
5
  import { QueueWorker } from './worker.js';
@@ -6,8 +7,9 @@ export declare class QueueManager {
6
7
  private readonly config;
7
8
  private readonly worker;
8
9
  private readonly database?;
10
+ private readonly redis?;
9
11
  private readonly queues;
10
- constructor(config: QueueConfig, worker: QueueWorker, database?: DatabaseManager | undefined);
12
+ constructor(config: QueueConfig, worker: QueueWorker, database?: DatabaseManager | undefined, redis?: RedisManager | undefined);
11
13
  connection(name?: string): QueueContract;
12
14
  getDefaultConnection(): string;
13
15
  private createConnection;
@@ -1 +1 @@
1
- {"version":3,"file":"queue-manager.d.ts","sourceRoot":"","sources":["../src/queue-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,KAAK,EAAE,WAAW,EAAyB,MAAM,YAAY,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,qBAAa,YAAY;IAIrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAL5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoC;gBAGxC,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,WAAW,EACnB,QAAQ,CAAC,EAAE,eAAe,YAAA;IAG7C,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,aAAa;IAiBxC,oBAAoB,IAAI,MAAM;IAI9B,OAAO,CAAC,gBAAgB;CAezB"}
1
+ {"version":3,"file":"queue-manager.d.ts","sourceRoot":"","sources":["../src/queue-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,OAAO,KAAK,EAAE,WAAW,EAAyB,MAAM,YAAY,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,qBAAa,YAAY;IAIrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAC1B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;IANzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoC;gBAGxC,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,WAAW,EACnB,QAAQ,CAAC,EAAE,eAAe,YAAA,EAC1B,KAAK,CAAC,EAAE,YAAY,YAAA;IAGvC,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,aAAa;IAiBxC,oBAAoB,IAAI,MAAM;IAI9B,OAAO,CAAC,gBAAgB;CAqBzB"}
@@ -1,14 +1,17 @@
1
1
  import { DatabaseQueue } from './database-queue.js';
2
+ import { RedisQueue } from './redis-queue.js';
2
3
  import { SyncQueue } from './sync-queue.js';
3
4
  export class QueueManager {
4
5
  config;
5
6
  worker;
6
7
  database;
8
+ redis;
7
9
  queues = new Map();
8
- constructor(config, worker, database) {
10
+ constructor(config, worker, database, redis) {
9
11
  this.config = config;
10
12
  this.worker = worker;
11
13
  this.database = database;
14
+ this.redis = redis;
12
15
  }
13
16
  connection(name) {
14
17
  const connectionName = name ?? this.config.default;
@@ -38,6 +41,12 @@ export class QueueManager {
38
41
  const dbConnection = this.database.connection(config.connection);
39
42
  return new DatabaseQueue(dbConnection, config);
40
43
  }
44
+ case 'redis': {
45
+ if (!this.redis) {
46
+ throw new Error('Redis manager is required for the redis queue driver');
47
+ }
48
+ return new RedisQueue(this.redis, config);
49
+ }
41
50
  default:
42
51
  throw new Error(`Unsupported queue driver: ${config.driver}`);
43
52
  }
@@ -1 +1 @@
1
- {"version":3,"file":"queue-manager.js","sourceRoot":"","sources":["../src/queue-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C,MAAM,OAAO,YAAY;IAIJ;IACA;IACA;IALF,MAAM,GAAG,IAAI,GAAG,EAAyB,CAAC;IAE3D,YACmB,MAAmB,EACnB,MAAmB,EACnB,QAA0B;QAF1B,WAAM,GAAN,MAAM,CAAa;QACnB,WAAM,GAAN,MAAM,CAAa;QACnB,aAAQ,GAAR,QAAQ,CAAkB;IAC1C,CAAC;IAEJ,UAAU,CAAC,IAAa;QACtB,MAAM,cAAc,GAAG,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACjD,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QACjE,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,oCAAoC,cAAc,EAAE,CAAC,CAAC;QACxE,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QACvC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,oBAAoB;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;IAC7B,CAAC;IAEO,gBAAgB,CAAC,MAA6B;QACpD,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;YACtB,KAAK,MAAM;gBACT,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpC,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACnB,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;gBAChF,CAAC;gBACD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBACjE,OAAO,IAAI,aAAa,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;YACjD,CAAC;YACD;gBACE,MAAM,IAAI,KAAK,CAAC,6BAA8B,MAAgC,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"queue-manager.js","sourceRoot":"","sources":["../src/queue-manager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C,MAAM,OAAO,YAAY;IAIJ;IACA;IACA;IACA;IANF,MAAM,GAAG,IAAI,GAAG,EAAyB,CAAC;IAE3D,YACmB,MAAmB,EACnB,MAAmB,EACnB,QAA0B,EAC1B,KAAoB;QAHpB,WAAM,GAAN,MAAM,CAAa;QACnB,WAAM,GAAN,MAAM,CAAa;QACnB,aAAQ,GAAR,QAAQ,CAAkB;QAC1B,UAAK,GAAL,KAAK,CAAe;IACpC,CAAC;IAEJ,UAAU,CAAC,IAAa;QACtB,MAAM,cAAc,GAAG,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACjD,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QACjE,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,oCAAoC,cAAc,EAAE,CAAC,CAAC;QACxE,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QACvC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,oBAAoB;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;IAC7B,CAAC;IAEO,gBAAgB,CAAC,MAA6B;QACpD,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;YACtB,KAAK,MAAM;gBACT,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpC,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACnB,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;gBAChF,CAAC;gBACD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBACjE,OAAO,IAAI,aAAa,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;YACjD,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;oBAChB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;gBAC1E,CAAC;gBACD,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC5C,CAAC;YACD;gBACE,MAAM,IAAI,KAAK,CAAC,6BAA8B,MAAgC,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC;CACF"}
@@ -1,4 +1,4 @@
1
- import { DatabaseQueue } from './database-queue.js';
1
+ import { isWorkerQueue } from './worker-queue.js';
2
2
  import { formatJobException, newFailedJobUuid, } from './failed-job-repository.js';
3
3
  export class QueueProcessor {
4
4
  manager;
@@ -17,8 +17,8 @@ export class QueueProcessor {
17
17
  const sleepSeconds = options.sleepSeconds ?? 1;
18
18
  const maxJobs = options.maxJobs;
19
19
  const connection = this.manager.connection(connectionName);
20
- if (!(connection instanceof DatabaseQueue)) {
21
- throw new Error('Queue worker only supports the database queue driver');
20
+ if (!isWorkerQueue(connection)) {
21
+ throw new Error('Queue worker only supports database and redis queue drivers');
22
22
  }
23
23
  let processed = 0;
24
24
  while (maxJobs === undefined || processed < maxJobs) {
@@ -1 +1 @@
1
- {"version":3,"file":"queue-processor.js","sourceRoot":"","sources":["../src/queue-processor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"queue-processor.js","sourceRoot":"","sources":["../src/queue-processor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import type { RedisManager } from '@tyravel/redis';
2
+ import type { Job } from './job.js';
3
+ import type { QueueContract } from './queue-contract.js';
4
+ import type { QueueJobRecord, RedisQueueConnectionConfig, SerializedJobPayload } from './types.js';
5
+ import type { WorkerQueue } from './worker-queue.js';
6
+ export declare class RedisQueue implements QueueContract, WorkerQueue {
7
+ private readonly redis;
8
+ private readonly redisConnection;
9
+ private readonly prefix;
10
+ private readonly retryAfter;
11
+ private readonly blockTimeout;
12
+ constructor(redis: RedisManager, config?: RedisQueueConnectionConfig);
13
+ push(job: Job, queue?: string): Promise<string>;
14
+ pushRaw(payload: SerializedJobPayload, queue?: string): Promise<string>;
15
+ later(delaySeconds: number, job: Job, queue?: string): Promise<string>;
16
+ pop(queue?: string): Promise<QueueJobRecord | null>;
17
+ deleteJob(id: number): Promise<void>;
18
+ release(id: number, delaySeconds?: number): Promise<void>;
19
+ decode(record: QueueJobRecord): SerializedJobPayload;
20
+ getRetryAfter(): number;
21
+ private client;
22
+ private createEnvelope;
23
+ private promoteDelayed;
24
+ private saveEnvelope;
25
+ private loadEnvelope;
26
+ private idsKey;
27
+ private jobKey;
28
+ private readyKey;
29
+ private delayedKey;
30
+ private reservedKey;
31
+ }
32
+ //# sourceMappingURL=redis-queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redis-queue.d.ts","sourceRoot":"","sources":["../src/redis-queue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAEpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EACV,cAAc,EACd,0BAA0B,EAC1B,oBAAoB,EACrB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAYrD,qBAAa,UAAW,YAAW,aAAa,EAAE,WAAW;IAOzD,OAAO,CAAC,QAAQ,CAAC,KAAK;IANxB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBAGnB,KAAK,EAAE,YAAY,EACpC,MAAM,GAAE,0BAAgD;IAQpD,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAIlD,OAAO,CAAC,OAAO,EAAE,oBAAoB,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAS1E,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,SAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAazE,GAAG,CAAC,KAAK,SAAY,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IA2BtD,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYpC,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,SAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB1D,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,oBAAoB;IAIpD,aAAa,IAAI,MAAM;YAIT,MAAM;IAIpB,OAAO,CAAC,cAAc;YAaR,cAAc;YASd,YAAY;YAIZ,YAAY;IAQ1B,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,WAAW;CAGpB"}
@@ -0,0 +1,155 @@
1
+ import { decodePayload, encodePayload, serializeJob } from './payload.js';
2
+ export class RedisQueue {
3
+ redis;
4
+ redisConnection;
5
+ prefix;
6
+ retryAfter;
7
+ blockTimeout;
8
+ constructor(redis, config = { driver: 'redis' }) {
9
+ this.redis = redis;
10
+ this.redisConnection = config.connection ?? 'default';
11
+ this.prefix = config.prefix ?? 'tyravel:';
12
+ this.retryAfter = config.retryAfter ?? 90;
13
+ this.blockTimeout = config.blockTimeout ?? 1;
14
+ }
15
+ async push(job, queue = 'default') {
16
+ return this.pushRaw(serializeJob(job), queue);
17
+ }
18
+ async pushRaw(payload, queue = 'default') {
19
+ const client = await this.client();
20
+ const id = await client.incr(this.idsKey());
21
+ const envelope = this.createEnvelope(id, queue, encodePayload(payload));
22
+ await this.saveEnvelope(client, envelope);
23
+ await client.lPush(this.readyKey(queue), String(id));
24
+ return String(id);
25
+ }
26
+ async later(delaySeconds, job, queue = 'default') {
27
+ const client = await this.client();
28
+ const id = await client.incr(this.idsKey());
29
+ const envelope = this.createEnvelope(id, queue, encodePayload(serializeJob(job)));
30
+ envelope.availableAt = unixNow() + delaySeconds;
31
+ await this.saveEnvelope(client, envelope);
32
+ await client.zAdd(this.delayedKey(queue), {
33
+ score: envelope.availableAt,
34
+ value: String(id),
35
+ });
36
+ return String(id);
37
+ }
38
+ async pop(queue = 'default') {
39
+ const client = await this.client();
40
+ await this.promoteDelayed(client, queue);
41
+ const blocked = await client.brPop(this.readyKey(queue), this.blockTimeout);
42
+ const element = blocked?.element ?? (await client.rPop(this.readyKey(queue)));
43
+ if (!element) {
44
+ return null;
45
+ }
46
+ const id = Number(element);
47
+ const envelope = await this.loadEnvelope(client, id);
48
+ if (!envelope) {
49
+ return null;
50
+ }
51
+ const now = unixNow();
52
+ envelope.reservedAt = now;
53
+ await this.saveEnvelope(client, envelope);
54
+ await client.zAdd(this.reservedKey(queue), {
55
+ score: now + this.retryAfter,
56
+ value: String(id),
57
+ });
58
+ return mapEnvelope(envelope);
59
+ }
60
+ async deleteJob(id) {
61
+ const client = await this.client();
62
+ const envelope = await this.loadEnvelope(client, id);
63
+ if (!envelope) {
64
+ return;
65
+ }
66
+ await client.del(this.jobKey(id));
67
+ await client.zRem(this.reservedKey(envelope.queue), String(id));
68
+ await client.zRem(this.delayedKey(envelope.queue), String(id));
69
+ }
70
+ async release(id, delaySeconds = 0) {
71
+ const client = await this.client();
72
+ const envelope = await this.loadEnvelope(client, id);
73
+ if (!envelope) {
74
+ return;
75
+ }
76
+ envelope.attempts += 1;
77
+ envelope.reservedAt = null;
78
+ envelope.availableAt = unixNow() + delaySeconds;
79
+ await this.saveEnvelope(client, envelope);
80
+ await client.zRem(this.reservedKey(envelope.queue), String(id));
81
+ await client.zAdd(this.delayedKey(envelope.queue), {
82
+ score: envelope.availableAt,
83
+ value: String(id),
84
+ });
85
+ }
86
+ decode(record) {
87
+ return decodePayload(record.payload);
88
+ }
89
+ getRetryAfter() {
90
+ return this.retryAfter;
91
+ }
92
+ async client() {
93
+ return this.redis.connection(this.redisConnection);
94
+ }
95
+ createEnvelope(id, queue, payload) {
96
+ const now = unixNow();
97
+ return {
98
+ id,
99
+ queue,
100
+ payload,
101
+ attempts: 0,
102
+ reservedAt: null,
103
+ availableAt: now,
104
+ createdAt: now,
105
+ };
106
+ }
107
+ async promoteDelayed(client, queue) {
108
+ const now = unixNow();
109
+ const ids = await client.zRangeByScore(this.delayedKey(queue), 0, now);
110
+ for (const id of ids) {
111
+ await client.zRem(this.delayedKey(queue), id);
112
+ await client.lPush(this.readyKey(queue), id);
113
+ }
114
+ }
115
+ async saveEnvelope(client, envelope) {
116
+ await client.set(this.jobKey(envelope.id), JSON.stringify(envelope));
117
+ }
118
+ async loadEnvelope(client, id) {
119
+ const raw = await client.get(this.jobKey(id));
120
+ if (!raw) {
121
+ return null;
122
+ }
123
+ return JSON.parse(raw);
124
+ }
125
+ idsKey() {
126
+ return `${this.prefix}queue:ids`;
127
+ }
128
+ jobKey(id) {
129
+ return `${this.prefix}queue:job:${id}`;
130
+ }
131
+ readyKey(queue) {
132
+ return `${this.prefix}queue:${queue}:ready`;
133
+ }
134
+ delayedKey(queue) {
135
+ return `${this.prefix}queue:${queue}:delayed`;
136
+ }
137
+ reservedKey(queue) {
138
+ return `${this.prefix}queue:${queue}:reserved`;
139
+ }
140
+ }
141
+ function unixNow() {
142
+ return Math.floor(Date.now() / 1000);
143
+ }
144
+ function mapEnvelope(envelope) {
145
+ return {
146
+ id: envelope.id,
147
+ queue: envelope.queue,
148
+ payload: envelope.payload,
149
+ attempts: envelope.attempts,
150
+ reservedAt: envelope.reservedAt,
151
+ availableAt: envelope.availableAt,
152
+ createdAt: envelope.createdAt,
153
+ };
154
+ }
155
+ //# sourceMappingURL=redis-queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redis-queue.js","sourceRoot":"","sources":["../src/redis-queue.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=redis-queue.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redis-queue.test.d.ts","sourceRoot":"","sources":["../src/redis-queue.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,60 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { MemoryRedis } from '@tyravel/redis';
3
+ import { Job } from './job.js';
4
+ import { JobRegistry } from './registry.js';
5
+ import { QueueManager } from './queue-manager.js';
6
+ import { QueueProcessor } from './queue-processor.js';
7
+ import { RedisQueue } from './redis-queue.js';
8
+ import { QueueWorker } from './worker.js';
9
+ class PersistedJob extends Job {
10
+ static values = [];
11
+ async handle() {
12
+ PersistedJob.values.push(this.data.value);
13
+ }
14
+ }
15
+ function asRedisManager(client) {
16
+ return {
17
+ connection: async () => client,
18
+ prefixKey: (key) => key,
19
+ close: async () => { },
20
+ };
21
+ }
22
+ describe('RedisQueue', () => {
23
+ it('stores and processes jobs through the worker', async () => {
24
+ PersistedJob.values = [];
25
+ const redis = asRedisManager(new MemoryRedis());
26
+ const queue = new RedisQueue(redis, { driver: 'redis', blockTimeout: 0 });
27
+ await queue.push(new PersistedJob({ value: 'redis-job' }));
28
+ const record = await queue.pop('default');
29
+ expect(record).not.toBeNull();
30
+ const registry = new JobRegistry().register(PersistedJob);
31
+ const worker = new QueueWorker(registry);
32
+ await worker.process(queue.decode(record));
33
+ await queue.deleteJob(record.id);
34
+ expect(PersistedJob.values).toEqual(['redis-job']);
35
+ });
36
+ it('processes queued jobs via QueueProcessor', async () => {
37
+ PersistedJob.values = [];
38
+ const redis = asRedisManager(new MemoryRedis());
39
+ const registry = new JobRegistry().register(PersistedJob);
40
+ const worker = new QueueWorker(registry);
41
+ const config = {
42
+ default: 'redis',
43
+ connections: {
44
+ redis: { driver: 'redis', blockTimeout: 0 },
45
+ },
46
+ };
47
+ const manager = new QueueManager(config, worker, undefined, redis);
48
+ const queue = manager.connection('redis');
49
+ await queue.push(new PersistedJob({ value: 'queued-redis' }));
50
+ const processor = new QueueProcessor(manager, registry, worker);
51
+ const processed = await processor.run({
52
+ connection: 'redis',
53
+ maxJobs: 1,
54
+ sleepSeconds: 0,
55
+ });
56
+ expect(processed).toBe(1);
57
+ expect(PersistedJob.values).toEqual(['queued-redis']);
58
+ });
59
+ });
60
+ //# sourceMappingURL=redis-queue.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redis-queue.test.js","sourceRoot":"","sources":["../src/redis-queue.test.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { FailedJobsConfig } from './failed-job-types.js';
2
- export type QueueDriver = 'sync' | 'database';
2
+ export type QueueDriver = 'sync' | 'database' | 'redis';
3
3
  export interface SyncQueueConnectionConfig {
4
4
  driver: 'sync';
5
5
  }
@@ -9,7 +9,14 @@ export interface DatabaseQueueConnectionConfig {
9
9
  connection?: string;
10
10
  retryAfter?: number;
11
11
  }
12
- export type QueueConnectionConfig = SyncQueueConnectionConfig | DatabaseQueueConnectionConfig;
12
+ export interface RedisQueueConnectionConfig {
13
+ driver: 'redis';
14
+ connection?: string;
15
+ prefix?: string;
16
+ retryAfter?: number;
17
+ blockTimeout?: number;
18
+ }
19
+ export type QueueConnectionConfig = SyncQueueConnectionConfig | DatabaseQueueConnectionConfig | RedisQueueConnectionConfig;
13
20
  export interface QueueConfig {
14
21
  default: string;
15
22
  connections: Record<string, QueueConnectionConfig>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,UAAU,CAAC;AAE9C,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,6BAA6B;IAC5C,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,qBAAqB,GAC7B,yBAAyB,GACzB,6BAA6B,CAAC;AAElC,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IACnD,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B;AAED,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAErG,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC;AAExD,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,6BAA6B;IAC5C,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,qBAAqB,GAC7B,yBAAyB,GACzB,6BAA6B,GAC7B,0BAA0B,CAAC;AAE/B,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IACnD,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B;AAED,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAErG,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB"}
@@ -0,0 +1,11 @@
1
+ import type { QueueContract } from './queue-contract.js';
2
+ import type { QueueJobRecord, SerializedJobPayload } from './types.js';
3
+ export interface WorkerQueue extends QueueContract {
4
+ pop(queue?: string): Promise<QueueJobRecord | null>;
5
+ deleteJob(id: number): Promise<void>;
6
+ release(id: number, delaySeconds?: number): Promise<void>;
7
+ decode(record: QueueJobRecord): SerializedJobPayload;
8
+ getRetryAfter(): number;
9
+ }
10
+ export declare function isWorkerQueue(connection: QueueContract): connection is WorkerQueue;
11
+ //# sourceMappingURL=worker-queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-queue.d.ts","sourceRoot":"","sources":["../src/worker-queue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvE,MAAM,WAAW,WAAY,SAAQ,aAAa;IAChD,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IACpD,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,oBAAoB,CAAC;IACrD,aAAa,IAAI,MAAM,CAAC;CACzB;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,aAAa,GAAG,UAAU,IAAI,WAAW,CAOlF"}
@@ -0,0 +1,7 @@
1
+ export function isWorkerQueue(connection) {
2
+ return ('pop' in connection &&
3
+ typeof connection.pop === 'function' &&
4
+ 'deleteJob' in connection &&
5
+ typeof connection.deleteJob === 'function');
6
+ }
7
+ //# sourceMappingURL=worker-queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-queue.js","sourceRoot":"","sources":["../src/worker-queue.ts"],"names":[],"mappings":"AAWA,MAAM,UAAU,aAAa,CAAC,UAAyB;IACrD,OAAO,CACL,KAAK,IAAI,UAAU;QACnB,OAAQ,UAA0B,CAAC,GAAG,KAAK,UAAU;QACrD,WAAW,IAAI,UAAU;QACzB,OAAQ,UAA0B,CAAC,SAAS,KAAK,UAAU,CAC5D,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tyravel/queue",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -15,8 +15,9 @@
15
15
  "typecheck": "tsc -p tsconfig.json --noEmit"
16
16
  },
17
17
  "dependencies": {
18
- "@tyravel/container": "0.2.0",
19
- "@tyravel/database": "0.2.0"
18
+ "@tyravel/container": "0.2.1",
19
+ "@tyravel/database": "0.2.1",
20
+ "@tyravel/redis": "0.2.1"
20
21
  },
21
22
  "files": [
22
23
  "dist"