From 779dcecfa79543f0ee3e1d566613a30cb1859d69 Mon Sep 17 00:00:00 2001 From: amiram Date: Wed, 14 Jun 2017 16:55:16 +0300 Subject: [PATCH 1/5] add option to call process with type and callback only --- types/kue/index.d.ts | 2 +- types/kue/kue-tests.ts | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/types/kue/index.d.ts b/types/kue/index.d.ts index 4fc964b118..4c391328a5 100644 --- a/types/kue/index.d.ts +++ b/types/kue/index.d.ts @@ -29,7 +29,7 @@ export declare class Queue extends events.EventEmitter { checkActiveJobTtl(ttlOptions: Object): void; watchStuckJobs(ms: number): void; setting(name: string, fn: Function): Queue; - process(type: string, n?: number, fn?: Function): void; + process(type: string, n?: number | Function, fn?: Function): void; shutdown(timeout: number, type: string, fn: Function): Queue; types(fn: Function): Queue; state(string: string, fn: Function): Queue; diff --git a/types/kue/kue-tests.ts b/types/kue/kue-tests.ts index d69f6eaead..bcd2c26a60 100644 --- a/types/kue/kue-tests.ts +++ b/types/kue/kue-tests.ts @@ -46,7 +46,7 @@ create(); // process video conversion jobs, 1 at a time. -jobs.process('video conversion', 1, function(job: kue.Job, done: Function) { +var processCb = function(job: kue.Job, done: Function) { var frames: number = job.data.frames; function next(i: number) { @@ -61,7 +61,10 @@ jobs.process('video conversion', 1, function(job: kue.Job, done: Function) { } next(0); -} ); +} + +jobs.process('video conversion', 1, processCb); +jobs.process('video conversion', processCb); function convertFrame(i: number, fn: Function) { setTimeout(fn, Math.random() * 50); @@ -102,4 +105,4 @@ jobs.process('email', 10, function(job: kue.Job, done: Function) { // start the UI kue.app.listen(3000); -console.log('UI started on port 3000'); \ No newline at end of file +console.log('UI started on port 3000'); From 61a9bd3f85e1a7610f8c97f0f09f4ed681aacd36 Mon Sep 17 00:00:00 2001 From: amiram Date: Wed, 14 Jun 2017 16:58:53 +0300 Subject: [PATCH 2/5] add author --- types/kue/index.d.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/types/kue/index.d.ts b/types/kue/index.d.ts index 4c391328a5..45fd6cfa83 100644 --- a/types/kue/index.d.ts +++ b/types/kue/index.d.ts @@ -1,6 +1,7 @@ // Type definitions for kue 0.11.x // Project: https://github.com/Automattic/kue // Definitions by: Nicholas Penree +// Amiram Korach // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped /// From 3db1d4c9b47ea86b18f3e4a7f2f6192b5f3190f2 Mon Sep 17 00:00:00 2001 From: amiram Date: Sun, 18 Jun 2017 09:57:00 +0300 Subject: [PATCH 3/5] add result to job and process done callback. https://github.com/Automattic/kue/blob/master/lib/queue/job.js#L205 https://github.com/Automattic/kue/blob/master/lib/queue/worker.js#L181 --- types/kue/index.d.ts | 6 +++++- types/kue/kue-tests.ts | 8 ++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/types/kue/index.d.ts b/types/kue/index.d.ts index 45fd6cfa83..035d83ce15 100644 --- a/types/kue/index.d.ts +++ b/types/kue/index.d.ts @@ -30,7 +30,7 @@ export declare class Queue extends events.EventEmitter { checkActiveJobTtl(ttlOptions: Object): void; watchStuckJobs(ms: number): void; setting(name: string, fn: Function): Queue; - process(type: string, n?: number | Function, fn?: Function): void; + process(type: string, n?: number | DoneCallback, fn?: DoneCallback): void; shutdown(timeout: number, type: string, fn: Function): Queue; types(fn: Function): Queue; state(string: string, fn: Function): Queue; @@ -57,10 +57,13 @@ interface Priorities { critical: number; } +export type DoneCallback = (err?: any, result?: any) => void; + export declare class Job extends events.EventEmitter { public id: number; public type: string; public data: any; + public result: any; public client: redisClientFactory.RedisClient; private _max_attempts; @@ -80,6 +83,7 @@ export declare class Job extends events.EventEmitter { log(str: string): Job; set(key: string, val: string, fn?: Function): Job; get(key: string, fn?: Function): Job; + get(key: string, jobType: string, fn?: Function): Job; progress(complete: number, total: number, data?: any): Job; delay(ms: number | Date): Job; removeOnComplete(param: any): Job; diff --git a/types/kue/kue-tests.ts b/types/kue/kue-tests.ts index bcd2c26a60..e20ec3e331 100644 --- a/types/kue/kue-tests.ts +++ b/types/kue/kue-tests.ts @@ -46,16 +46,16 @@ create(); // process video conversion jobs, 1 at a time. -var processCb = function(job: kue.Job, done: Function) { +var processCb = function(job: kue.Job, done: kue.DoneCallback) { var frames: number = job.data.frames; function next(i: number) { // pretend we are doing some work - convertFrame(i, function(err: Error) { + convertFrame(i, function(err: Error, result: any) { if (err) return done(err); // report progress, i/frames complete job.progress(i, frames); - if (i >= frames) done(); + if (i >= frames) done(null, result); else next(i + Math.random() * 10); } ); } @@ -67,7 +67,7 @@ jobs.process('video conversion', 1, processCb); jobs.process('video conversion', processCb); function convertFrame(i: number, fn: Function) { - setTimeout(fn, Math.random() * 50); + setTimeout(() => fn(null, Math.random()), Math.random() * 50); } // one minute From ccdd34441dbb357a436c2ab3e8df3144ece9fca7 Mon Sep 17 00:00:00 2001 From: amiram Date: Sun, 18 Jun 2017 10:38:46 +0300 Subject: [PATCH 4/5] add created_at --- types/kue/index.d.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/types/kue/index.d.ts b/types/kue/index.d.ts index 035d83ce15..039ab1fcee 100644 --- a/types/kue/index.d.ts +++ b/types/kue/index.d.ts @@ -64,6 +64,9 @@ export declare class Job extends events.EventEmitter { public type: string; public data: any; public result: any; + // Should always be a number however currently it is a number when creating and a string when loading + // https://github.com/Automattic/kue/issues/1081 + public created_at: string | number; public client: redisClientFactory.RedisClient; private _max_attempts; From 7b23bb554f677a83ac096b1bfa6c9c2e2a330b5a Mon Sep 17 00:00:00 2001 From: amiram Date: Sun, 18 Jun 2017 12:24:40 +0300 Subject: [PATCH 5/5] add get job callback definition https://github.com/Automattic/kue/blob/master/lib/queue/job.js#L161 --- types/kue/index.d.ts | 3 ++- types/kue/kue-tests.ts | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/types/kue/index.d.ts b/types/kue/index.d.ts index 039ab1fcee..8c778a8693 100644 --- a/types/kue/index.d.ts +++ b/types/kue/index.d.ts @@ -58,6 +58,7 @@ interface Priorities { } export type DoneCallback = (err?: any, result?: any) => void; +export type JobCallback = (err?: any, job?: Job) => void; export declare class Job extends events.EventEmitter { public id: number; @@ -73,7 +74,7 @@ export declare class Job extends events.EventEmitter { static priorities: Priorities; static disableSearch: boolean; static jobEvents: boolean; - static get(id: number, fn: Function): void; + static get(id: number, type: string | JobCallback, fn?: JobCallback): void; static remove(id: number, fn?: Function): void; static removeBadJob(id: number): void; static log(id: number, fn: Function): void; diff --git a/types/kue/kue-tests.ts b/types/kue/kue-tests.ts index e20ec3e331..fd929d7aeb 100644 --- a/types/kue/kue-tests.ts +++ b/types/kue/kue-tests.ts @@ -39,6 +39,13 @@ function create() { job.save(); + kue.Job.get(job.id, function (err: any, _job: kue.Job) { + console.log('get job', _job); + }); + kue.Job.get(job.id, 'video conversion', function (err: any, _job: kue.Job) { + console.log('get job', _job); + }); + setTimeout( create, Math.random() * 2000 | 0 ); }