nmtjs 0.15.0-beta.19 → 0.15.0-beta.20

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
@@ -1,6 +1,6 @@
1
1
  import { createConsolePrettyDestination, createFactoryInjectable, createLazyInjectable, createValueInjectable } from '@nmtjs/core';
2
2
  import { createTransport } from '@nmtjs/gateway';
3
- import { createContractProcedure, createContractRouter, createFilter, createGuard, createHook, createJob, createMiddleware, createPlugin, createProcedure, createRootRouter, createRouter, createStep, defineApplication, defineServer } from './runtime/index.ts';
3
+ import { createContractProcedure, createContractRouter, createFilter, createGuard, createHook, createJob, createJobsRouter, createMiddleware, createPlugin, createProcedure, createRootRouter, createRouter, createStep, defineApplication, defineServer, jobOperation } from './runtime/index.ts';
4
4
  export declare const neemata: {
5
5
  app: typeof defineApplication;
6
6
  server: typeof defineServer;
@@ -55,6 +55,9 @@ export declare const neemata: {
55
55
  job: typeof createJob;
56
56
  step: typeof createStep;
57
57
  hook: typeof createHook;
58
+ jobRouter: typeof createJobsRouter & {
59
+ operation: typeof jobOperation;
60
+ };
58
61
  };
59
62
  export { c } from '@nmtjs/contract';
60
63
  export { Scope } from '@nmtjs/core';
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { CoreInjectables, createConsolePrettyDestination, createFactoryInjectable, createLazyInjectable, createValueInjectable, } from '@nmtjs/core';
2
2
  import { createTransport, GatewayInjectables } from '@nmtjs/gateway';
3
- import { createContractProcedure, createContractRouter, createFilter, createGuard, createHook, createJob, createMiddleware, createPlugin, createProcedure, createRootRouter, createRouter, createStep, defineApplication, defineServer, RuntimeInjectables, } from "./runtime/index.js";
3
+ import { createContractProcedure, createContractRouter, createFilter, createGuard, createHook, createJob, createJobsRouter, createMiddleware, createPlugin, createProcedure, createRootRouter, createRouter, createStep, defineApplication, defineServer, jobOperation, RuntimeInjectables, } from "./runtime/index.js";
4
4
  export const neemata = {
5
5
  app: defineApplication,
6
6
  server: defineServer,
@@ -30,6 +30,7 @@ export const neemata = {
30
30
  job: createJob,
31
31
  step: createStep,
32
32
  hook: createHook,
33
+ jobRouter: Object.assign(createJobsRouter, { operation: jobOperation }),
33
34
  };
34
35
  export { c } from '@nmtjs/contract';
35
36
  export { Scope } from '@nmtjs/core';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,8BAA8B,EAC9B,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAEpE,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,YAAY,EACZ,WAAW,EACX,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,GACnB,MAAM,oBAAoB,CAAA;AAE3B,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,GAAG,EAAE,iBAAiB;IACtB,MAAM,EAAE,YAAY;IACpB,WAAW,EAAE;QACX,GAAG,eAAe;QAClB,GAAG,kBAAkB;QACrB,GAAI,kBAAgD;KACrD;IACD,SAAS,EAAE,eAAe;IAC1B,MAAM,EAAE,YAAY;IACpB,OAAO,EAAE;QACP,OAAO;QACL,qBAAqB;QACrB,8BAAuE;KAC1E;IACD,KAAK,EAAE,qBAAqB;IAC5B,IAAI,EAAE,oBAAoB;IAC1B,OAAO,EAAE,uBAAuB;IAChC,UAAU,EAAE,gBAAgB;IAC5B,MAAM,EAAE,YAAY;IACpB,cAAc,EAAE,oBAAoB;IACpC,SAAS,EAAE,eAAe;IAC1B,iBAAiB,EAAE,uBAAuB;IAC1C,UAAU,EAAE,gBAAgB;IAC5B,KAAK,EAAE,WAAW;IAClB,MAAM,EAAE,YAAY;IACpB,GAAG,EAAE,SAAS;IACd,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,UAAU;CACjB,CAAA;AAED,OAAO,EAAE,CAAC,EAAE,MAAM,iBAAiB,CAAA;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAEL,WAAW,EACX,sBAAsB,GACvB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AACzE,OAAO,EAAE,CAAC,EAAE,MAAM,aAAa,CAAA;AAE/B,OAAO,EACL,QAAQ,EACR,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,SAAS,EACT,UAAU,GACX,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EAAE,OAAO,IAAI,CAAC,EAAE,CAAA;AACvB,eAAe,OAAO,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,8BAA8B,EAC9B,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAEpE,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,YAAY,EACZ,WAAW,EACX,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,kBAAkB,GACnB,MAAM,oBAAoB,CAAA;AAE3B,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,GAAG,EAAE,iBAAiB;IACtB,MAAM,EAAE,YAAY;IACpB,WAAW,EAAE;QACX,GAAG,eAAe;QAClB,GAAG,kBAAkB;QACrB,GAAI,kBAAgD;KACrD;IACD,SAAS,EAAE,eAAe;IAC1B,MAAM,EAAE,YAAY;IACpB,OAAO,EAAE;QACP,OAAO;QACL,qBAAqB;QACrB,8BAAuE;KAC1E;IACD,KAAK,EAAE,qBAAqB;IAC5B,IAAI,EAAE,oBAAoB;IAC1B,OAAO,EAAE,uBAAuB;IAChC,UAAU,EAAE,gBAAgB;IAC5B,MAAM,EAAE,YAAY;IACpB,cAAc,EAAE,oBAAoB;IACpC,SAAS,EAAE,eAAe;IAC1B,iBAAiB,EAAE,uBAAuB;IAC1C,UAAU,EAAE,gBAAgB;IAC5B,KAAK,EAAE,WAAW;IAClB,MAAM,EAAE,YAAY;IACpB,GAAG,EAAE,SAAS;IACd,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,UAAU;IAChB,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;CACxE,CAAA;AAED,OAAO,EAAE,CAAC,EAAE,MAAM,iBAAiB,CAAA;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAEL,WAAW,EACX,sBAAsB,GACvB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AACzE,OAAO,EAAE,CAAC,EAAE,MAAM,aAAa,CAAA;AAE/B,OAAO,EACL,QAAQ,EACR,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,SAAS,EACT,UAAU,GACX,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EAAE,OAAO,IAAI,CAAC,EAAE,CAAA;AACvB,eAAe,OAAO,CAAA"}
@@ -7,6 +7,7 @@ export * from './enums.ts';
7
7
  export * from './injectables.ts';
8
8
  export * from './jobs/job.ts';
9
9
  export * from './jobs/manager.ts';
10
+ export * from './jobs/router.ts';
10
11
  export * from './jobs/step.ts';
11
12
  export * from './pubsub/manager.ts';
12
13
  export * from './pubsub/redis.ts';
@@ -7,6 +7,7 @@ export * from "./enums.js";
7
7
  export * from "./injectables.js";
8
8
  export * from "./jobs/job.js";
9
9
  export * from "./jobs/manager.js";
10
+ export * from "./jobs/router.js";
10
11
  export * from "./jobs/step.js";
11
12
  export * from "./pubsub/manager.js";
12
13
  export * from "./pubsub/redis.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AACjC,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,qBAAqB,CAAA;AACnC,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,YAAY,CAAA;AAC1B,cAAc,0BAA0B,CAAA;AACxC,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AACjC,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,qBAAqB,CAAA;AACnC,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,YAAY,CAAA;AAC1B,cAAc,0BAA0B,CAAA;AACxC,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA"}
@@ -7,13 +7,14 @@ import type { AnyJobStep, JobStep } from './step.ts';
7
7
  import { kJobKey } from '../constants.ts';
8
8
  type DefaultObjectType = ObjectType<{}>;
9
9
  type DefaultResultType = Record<string, any>;
10
- export type AnyJobOptions = JobOptions<string, any, any, any, any>;
10
+ export type AnyJobOptions = JobOptions<string, any, any, any, any, any>;
11
11
  export interface AnyJob {
12
12
  _: {
13
13
  data: any;
14
14
  result: any;
15
15
  input: any;
16
16
  output: any;
17
+ progress: any;
17
18
  };
18
19
  [kJobKey]: true;
19
20
  options: AnyJobOptions;
@@ -23,96 +24,109 @@ export interface AnyJob {
23
24
  dependencies: Dependencies;
24
25
  input: AnyObjectLikeType;
25
26
  output: AnyObjectLikeType;
26
- afterEachHandler?: JobAfterEachHandler<any, any, any, any>;
27
- beforeEachHandler?: JobBeforeEachHandler<any, any, any, any>;
28
- onErrorHandler?: JobOnErrorHandler<any, any, any, any>;
29
- returnHandler?: JobReturnHandler<any, any, any, any, any>;
27
+ progress: AnyObjectLikeType;
28
+ afterEachHandler?: JobAfterEachHandler<any, any, any, any, any>;
29
+ beforeEachHandler?: JobBeforeEachHandler<any, any, any, any, any>;
30
+ onErrorHandler?: JobOnErrorHandler<any, any, any, any, any>;
31
+ returnHandler?: JobReturnHandler<any, any, any, any, any, any>;
30
32
  }
31
33
  export type JobBackoffOptions = {
32
34
  type: 'fixed' | 'exponential';
33
35
  delay: number;
34
36
  jitter?: number;
35
37
  };
36
- export type JobCondition<Deps extends Dependencies = {}, Result extends DefaultResultType = {}, Data = any, Input extends AnyObjectLikeType = AnyObjectLikeType> = (params: {
38
+ export type JobCondition<Deps extends Dependencies = {}, Result extends DefaultResultType = {}, Data = any, Input extends AnyObjectLikeType = AnyObjectLikeType, Progress extends AnyObjectLikeType = AnyObjectLikeType> = (params: {
37
39
  context: DependencyContext<Deps>;
38
40
  data: Data;
39
41
  input: t.infer.decode.output<Input>;
40
42
  result: Result;
43
+ progress: t.infer.decode.output<Progress>;
41
44
  }) => MaybePromise<boolean>;
42
- export type JobReturnHandler<Deps extends Dependencies, Result extends DefaultResultType, Input extends AnyObjectLikeType, Output extends AnyObjectLikeType, Data> = (params: {
45
+ export type JobReturnHandler<Deps extends Dependencies, Result extends DefaultResultType, Input extends AnyObjectLikeType, Output extends AnyObjectLikeType, Data, Progress extends AnyObjectLikeType = AnyObjectLikeType> = (params: {
43
46
  context: DependencyContext<Deps>;
44
47
  data: Data;
45
48
  input: t.infer.decode.output<Input>;
46
49
  result: Result;
50
+ progress: t.infer.decode.output<Progress>;
47
51
  }) => MaybePromise<t.infer.encode.input<Output>>;
48
- export type JobDataHandler<Deps extends Dependencies, Input extends AnyObjectLikeType, Data> = (ctx: DependencyContext<Deps>, input: t.infer.decode.output<Input>) => MaybePromise<Data>;
49
- export type JobAfterEachHandler<Deps extends Dependencies, Result extends DefaultResultType, Input extends AnyObjectLikeType, Data> = (params: {
52
+ export type JobDataHandler<Deps extends Dependencies, Input extends AnyObjectLikeType, Data, Progress extends AnyObjectLikeType = AnyObjectLikeType> = (ctx: DependencyContext<Deps>, input: t.infer.decode.output<Input>, progress: t.infer.decode.output<Progress>) => MaybePromise<Data>;
53
+ export type JobAfterEachHandler<Deps extends Dependencies, Result extends DefaultResultType, Input extends AnyObjectLikeType, Data, Progress extends AnyObjectLikeType = AnyObjectLikeType> = (params: {
50
54
  context: DependencyContext<Deps>;
51
55
  data: Data;
52
56
  input: t.infer.decode.output<Input>;
53
57
  result: Result;
58
+ progress: t.infer.decode.output<Progress>;
54
59
  step: AnyJobStep;
55
60
  stepIndex: number;
56
61
  }) => MaybePromise<void>;
57
- export type JobBeforeEachHandler<Deps extends Dependencies, Result extends DefaultResultType, Input extends AnyObjectLikeType, Data> = (params: {
62
+ export type JobBeforeEachHandler<Deps extends Dependencies, Result extends DefaultResultType, Input extends AnyObjectLikeType, Data, Progress extends AnyObjectLikeType = AnyObjectLikeType> = (params: {
58
63
  context: DependencyContext<Deps>;
59
64
  data: Data;
60
65
  input: t.infer.decode.output<Input>;
61
66
  result: Result;
67
+ progress: t.infer.decode.output<Progress>;
62
68
  step: AnyJobStep;
63
69
  stepIndex: number;
64
70
  }) => MaybePromise<void>;
65
- export type JobOnErrorHandler<Deps extends Dependencies, Result extends DefaultResultType, Input extends AnyObjectLikeType, Data> = (params: {
71
+ export type JobOnErrorHandler<Deps extends Dependencies, Result extends DefaultResultType, Input extends AnyObjectLikeType, Data, Progress extends AnyObjectLikeType = AnyObjectLikeType> = (params: {
66
72
  context: DependencyContext<Deps>;
67
73
  data: Data;
68
74
  input: t.infer.decode.output<Input>;
69
75
  result: Result;
76
+ progress: t.infer.decode.output<Progress>;
70
77
  step: AnyJobStep;
71
78
  stepIndex: number;
72
79
  error: unknown;
73
80
  }) => MaybePromise<boolean | void>;
74
- export interface JobOptions<Name extends string = string, Input extends AnyObjectLikeType = AnyObjectLikeType, Output extends AnyObjectLikeType = AnyObjectLikeType, Deps extends Dependencies = {}, Data = any> {
81
+ export interface JobOptions<Name extends string = string, Input extends AnyObjectLikeType = AnyObjectLikeType, Output extends AnyObjectLikeType = AnyObjectLikeType, Progress extends AnyObjectLikeType = DefaultObjectType, Deps extends Dependencies = {}, Data = any> {
75
82
  name: Name;
76
83
  pool: JobWorkerPool;
77
84
  input: Input;
78
85
  output: Output;
86
+ progress?: Progress;
79
87
  concurrency?: number;
80
88
  timeout?: number;
81
89
  dependencies?: Deps;
82
- data?: JobDataHandler<Deps, Input, Data>;
90
+ data?: JobDataHandler<Deps, Input, Data, Progress>;
83
91
  attempts?: number;
84
92
  backoff?: JobBackoffOptions;
85
93
  oneoff?: boolean;
86
94
  }
87
- export declare class Job<in out Name extends string = string, in out Deps extends Dependencies = {}, in out Data = any, in out Input extends AnyObjectLikeType = DefaultObjectType, in out Output extends AnyObjectLikeType = DefaultObjectType, out Steps extends [...AnyJobStep[]] = [], in out Result extends DefaultResultType = {}, out Return extends boolean = false> implements AnyJob {
88
- options: JobOptions<Name, Input, Output, Deps, Data>;
95
+ export declare class Job<in out Name extends string = string, in out Deps extends Dependencies = {}, in out Data = any, in out Input extends AnyObjectLikeType = DefaultObjectType, in out Output extends AnyObjectLikeType = DefaultObjectType, in out Progress extends AnyObjectLikeType = DefaultObjectType, out Steps extends [...AnyJobStep[]] = [], in out Result extends DefaultResultType = {}, out Return extends boolean = false> implements AnyJob {
96
+ options: JobOptions<Name, Input, Output, Progress, Deps, Data>;
89
97
  stack?: string | undefined;
90
98
  _: {
91
99
  data: Data;
92
100
  result: Result & t.infer.decode.output<Input>;
93
101
  input: t.infer.decode.output<Input>;
94
102
  output: t.infer.decode.output<Output>;
103
+ progress: t.infer.decode.output<Progress>;
95
104
  };
96
105
  [kJobKey]: true;
97
106
  steps: Steps;
98
- conditions: Map<number, JobCondition<any, any, any, any>>;
99
- returnHandler?: JobReturnHandler<Deps, this['_']['result'], Input, Output, Data>;
100
- afterEachHandler?: JobAfterEachHandler<Deps, this['_']['result'], Input, Data>;
101
- beforeEachHandler?: JobBeforeEachHandler<Deps, this['_']['result'], Input, Data>;
102
- onErrorHandler?: JobOnErrorHandler<Deps, this['_']['result'], Input, Data>;
103
- constructor(options: JobOptions<Name, Input, Output, Deps, Data>, stack?: string | undefined);
107
+ conditions: Map<number, JobCondition<any, any, any, any, any>>;
108
+ returnHandler?: JobReturnHandler<Deps, this['_']['result'], Input, Output, Data, Progress>;
109
+ afterEachHandler?: JobAfterEachHandler<Deps, this['_']['result'], Input, Data, Progress>;
110
+ beforeEachHandler?: JobBeforeEachHandler<Deps, this['_']['result'], Input, Data, Progress>;
111
+ onErrorHandler?: JobOnErrorHandler<Deps, this['_']['result'], Input, Data, Progress>;
112
+ constructor(options: JobOptions<Name, Input, Output, Progress, Deps, Data>, stack?: string | undefined);
104
113
  get name(): Name;
105
114
  get dependencies(): Deps;
106
115
  get input(): Input;
107
116
  get output(): Output;
117
+ get progress(): Progress;
108
118
  step<StepInput extends AnyObjectLikeType, StepOutput extends AnyObjectLikeType, StepDeps extends Dependencies, StepResult, Condition extends JobCondition<Deps, Result, this['_']['data'], Input> | undefined>(...[step, condition]: Return extends false ? [
109
119
  step: JobStep<StepInput, StepOutput, StepDeps, this['_']['result'] extends t.infer.decode.output<StepInput> ? t.infer.decode.output<StepOutput> : TSError<'Accumulated job result does not satisfy current step input:', this['_']['result']>, this['_']['data']>,
110
120
  condition?: Condition
111
- ] : [TSError<'Job has already has return statement'>]): Job<Name, Deps, Data, Input, Output, [...Steps, JobStep<StepInput, StepOutput, StepDeps, StepResult, any>], Result & (undefined extends Condition ? t.infer.decode.output<StepOutput extends undefined ? DefaultObjectType : StepOutput> : Partial<t.infer.decode.output<StepOutput extends undefined ? DefaultObjectType : StepOutput>>)>;
112
- return(...[handler]: Return extends false ? Result extends t.infer.encode.input<Output> ? [JobReturnHandler<Deps, this['_']['result'], Input, Output, Data>?] : [JobReturnHandler<Deps, this['_']['result'], Input, Output, Data>] : [TSError<'Job already has a return statement'>]): Job<Name, Deps, Data, Input, Output, Steps, Result, true>;
113
- afterEach(handler: Return extends true ? JobAfterEachHandler<Deps, this['_']['result'], Input, Data> : TSError<'Job must have a return statement to use afterEach'>): this;
114
- beforeEach(handler: Return extends true ? JobBeforeEachHandler<Deps, this['_']['result'], Input, Data> : TSError<'Job must have a return statement to use beforeEach'>): this;
115
- onError(handler: Return extends true ? JobOnErrorHandler<Deps, this['_']['result'], Input, Data> : TSError<'Job must have a return statement to use onError'>): this;
121
+ ] : [TSError<'Job has already has return statement'>]): Job<Name, Deps, Data, Input, Output, Progress, [...Steps, JobStep<StepInput, StepOutput, StepDeps, StepResult, any>], Result & (undefined extends Condition ? t.infer.decode.output<StepOutput extends undefined ? DefaultObjectType : StepOutput> : Partial<t.infer.decode.output<StepOutput extends undefined ? DefaultObjectType : StepOutput>>)>;
122
+ return(...[handler]: Return extends false ? Result extends t.infer.encode.input<Output> ? [
123
+ JobReturnHandler<Deps, this['_']['result'], Input, Output, Data, Progress>?
124
+ ] : [
125
+ JobReturnHandler<Deps, this['_']['result'], Input, Output, Data, Progress>
126
+ ] : [TSError<'Job already has a return statement'>]): Job<Name, Deps, Data, Input, Output, Progress, Steps, Result, true>;
127
+ afterEach(handler: Return extends true ? JobAfterEachHandler<Deps, this['_']['result'], Input, Data, Progress> : TSError<'Job must have a return statement to use afterEach'>): this;
128
+ beforeEach(handler: Return extends true ? JobBeforeEachHandler<Deps, this['_']['result'], Input, Data, Progress> : TSError<'Job must have a return statement to use beforeEach'>): this;
129
+ onError(handler: Return extends true ? JobOnErrorHandler<Deps, this['_']['result'], Input, Data, Progress> : TSError<'Job must have a return statement to use onError'>): this;
116
130
  }
117
- export declare function createJob<Name extends string, Input extends AnyObjectLikeType, Output extends AnyObjectLikeType, Deps extends Dependencies = {}, Data = any>(options: JobOptions<Name, Input, Output, Deps, Data>): Job<Name, Deps, Data, Input, Output, [], {}, false>;
131
+ export declare function createJob<Name extends string, Input extends AnyObjectLikeType, Output extends AnyObjectLikeType, Deps extends Dependencies = {}, Data = any, Progress extends AnyObjectLikeType = DefaultObjectType>(options: JobOptions<Name, Input, Output, Progress, Deps, Data>): Job<Name, Deps, Data, Input, Output, Progress, [], {}, false>;
118
132
  export {};
@@ -28,6 +28,9 @@ export class Job {
28
28
  get output() {
29
29
  return this.options.output;
30
30
  }
31
+ get progress() {
32
+ return this.options.progress;
33
+ }
31
34
  step(...[step, condition]) {
32
35
  if (!isJobStep(step))
33
36
  throw new Error('Invalid job step object');
@@ -1 +1 @@
1
- {"version":3,"file":"job.js","sourceRoot":"","sources":["../../../src/runtime/jobs/job.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AAIpD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAmIrC,MAAM,OAAO,GAAG;IAqCL;IACA;IA3BT,CAAC,CAKC;IACF,CAAC,OAAO,CAAC,GAAG,IAAa,CAAA;IACzB,KAAK,GAAU,EAAsB,CAAA;IACrC,UAAU,GAAkD,IAAI,GAAG,EAAE,CAAA;IACrE,aAAa,CAMZ;IACD,gBAAgB,CAA8D;IAC9E,iBAAiB,CAKhB;IACD,cAAc,CAA4D;IAE1E,YACS,OAAoD,EACpD,KAAc;QADd,YAAO,GAAP,OAAO,CAA6C;QACpD,UAAK,GAAL,KAAK,CAAS;IACpB,CAAC;IAEJ,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAA;IAC1B,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,IAAK,EAAW,CAAA;IAClD,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,KAAc,CAAA;IACpC,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,MAAgB,CAAA;IACtC,CAAC;IAED,IAAI,CASF,GAAG,CAAC,IAAI,EAAE,SAAS,CAgBkC;QAErD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;QAEhE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACpC,IAAI,SAAS;YAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,SAAS,CAAC,CAAA;QAEzD,OAAO,IAiBN,CAAA;IACH,CAAC;IAED,MAAM,CACJ,GAAG,CAAC,OAAO,CAIwC;QAEnD,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;YAClC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAA;QAC9B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,aAAa,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,MAAa,CAAA;QAChD,CAAC;QACD,OAAO,IASN,CAAA;IACH,CAAC;IAED,SAAS,CACP,OAEgE;QAEhE,IAAI,CAAC,gBAAgB,GAAG,OAAc,CAAA;QACtC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,UAAU,CACR,OAEiE;QAEjE,IAAI,CAAC,iBAAiB,GAAG,OAAc,CAAA;QACvC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,CACL,OAE8D;QAE9D,IAAI,CAAC,cAAc,GAAG,OAAc,CAAA;QACpC,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAED,MAAM,UAAU,SAAS,CAMvB,OAAoD;IACpD,MAAM,KAAK,GAAG,oBAAoB,EAAE,CAAA;IACpC,OAAO,IAAI,GAAG,CACZ,EAAE,YAAY,EAAE,EAAU,EAAE,GAAG,OAAO,EAAE,EACxC,KAAK,CACN,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"job.js","sourceRoot":"","sources":["../../../src/runtime/jobs/job.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AAIpD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAkJrC,MAAM,OAAO,GAAG;IAqDL;IACA;IA1CT,CAAC,CAMC;IACF,CAAC,OAAO,CAAC,GAAG,IAAa,CAAA;IACzB,KAAK,GAAU,EAAsB,CAAA;IACrC,UAAU,GAAuD,IAAI,GAAG,EAAE,CAAA;IAC1E,aAAa,CAOZ;IACD,gBAAgB,CAMf;IACD,iBAAiB,CAMhB;IACD,cAAc,CAMb;IAED,YACS,OAA8D,EAC9D,KAAc;QADd,YAAO,GAAP,OAAO,CAAuD;QAC9D,UAAK,GAAL,KAAK,CAAS;IACpB,CAAC;IAEJ,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAA;IAC1B,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,IAAK,EAAW,CAAA;IAClD,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,KAAc,CAAA;IACpC,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,MAAgB,CAAA;IACtC,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,QAAoB,CAAA;IAC1C,CAAC;IAED,IAAI,CASF,GAAG,CAAC,IAAI,EAAE,SAAS,CAgBkC;QAErD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;QAEhE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACpC,IAAI,SAAS;YAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,SAAS,CAAC,CAAA;QAEzD,OAAO,IAkBN,CAAA;IACH,CAAC;IAED,MAAM,CACJ,GAAG,CAAC,OAAO,CAsBwC;QAEnD,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;YAClC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAA;QAC9B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,aAAa,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,MAAa,CAAA;QAChD,CAAC;QACD,OAAO,IAUN,CAAA;IACH,CAAC;IAED,SAAS,CACP,OAEgE;QAEhE,IAAI,CAAC,gBAAgB,GAAG,OAAc,CAAA;QACtC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,UAAU,CACR,OAEiE;QAEjE,IAAI,CAAC,iBAAiB,GAAG,OAAc,CAAA;QACvC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,CACL,OAE8D;QAE9D,IAAI,CAAC,cAAc,GAAG,OAAc,CAAA;QACpC,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAED,MAAM,UAAU,SAAS,CAOvB,OAA8D;IAC9D,MAAM,KAAK,GAAG,oBAAoB,EAAE,CAAA;IACpC,OAAO,IAAI,GAAG,CACZ,EAAE,YAAY,EAAE,EAAU,EAAE,GAAG,OAAO,EAAE,EACxC,KAAK,CACN,CAAA;AACH,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { Job, JobType, QueueEventsListener } from 'bullmq';
1
+ import type { Job, JobState, JobType, QueueEventsListener } from 'bullmq';
2
2
  import { Queue, QueueEvents, QueueEventsProducer } from 'bullmq';
3
3
  import type { ServerStoreConfig } from '../server/config.ts';
4
4
  import type { Store } from '../types.ts';
@@ -28,21 +28,29 @@ export declare class QueueJobResult<T extends AnyJob = AnyJob> {
28
28
  get name(): string;
29
29
  waitResult(): Promise<T["_"]["output"]>;
30
30
  }
31
- export type JobListItem<T extends AnyJob = AnyJob> = Pick<Job<T['_']['input'], T['_']['output'], T['options']['name']>, 'id' | 'queueName' | 'priority' | 'progress' | 'name' | 'data' | 'returnvalue' | 'attemptsMade' | 'processedOn' | 'finishedOn' | 'failedReason'>;
31
+ export type JobItem<T extends AnyJob = AnyJob> = Pick<Job<T['_']['input'], T['_']['output'], T['options']['name']>, 'queueName' | 'priority' | 'progress' | 'name' | 'data' | 'returnvalue' | 'attemptsMade' | 'processedOn' | 'finishedOn' | 'failedReason' | 'stacktrace'> & {
32
+ id: string;
33
+ status: JobState | 'unknown';
34
+ };
32
35
  export interface JobManagerInstance {
33
36
  list<T extends AnyJob>(job: T, options?: {
34
37
  page?: number;
35
38
  limit?: number;
36
- state?: JobType[];
39
+ state?: JobState[];
37
40
  }): Promise<{
38
- items: JobListItem<T>[];
41
+ items: JobItem<T>[];
39
42
  page: number;
40
43
  limit: number;
41
44
  pages: number;
42
45
  total: number;
43
46
  }>;
44
- get<T extends AnyJob>(job: T, id: string): Promise<JobListItem<T> | null>;
47
+ get<T extends AnyJob>(job: T, id: string): Promise<JobItem<T> | null>;
45
48
  add<T extends AnyJob>(job: T, data: T['_']['input'], options?: QueueJobAddOptions): Promise<QueueJobResult<T>>;
49
+ retry(job: AnyJob, id: string, options?: {
50
+ clearState?: boolean;
51
+ }): Promise<void>;
52
+ remove(job: AnyJob, id: string): Promise<void>;
53
+ cancel(job: AnyJob, id: string): Promise<void>;
46
54
  }
47
55
  export type CustomJobsEvents = QueueEventsListener & {
48
56
  [K in `cancel:${string}`]: (args: {}, id: string) => void;
@@ -70,19 +78,26 @@ export declare class JobManager {
70
78
  limit?: number;
71
79
  state?: JobType[];
72
80
  }): Promise<never[] | {
73
- items: Pick<Job<any, any, string>, "name" | "data" | "id" | "queueName" | "priority" | "progress" | "returnvalue" | "attemptsMade" | "processedOn" | "finishedOn" | "failedReason">[];
81
+ items: (Pick<Job<any, any, string>, "name" | "data" | "progress" | "queueName" | "priority" | "returnvalue" | "attemptsMade" | "processedOn" | "finishedOn" | "failedReason" | "stacktrace"> & {
82
+ id: string;
83
+ status: JobState | "unknown";
84
+ })[];
74
85
  page: number;
75
86
  limit: number;
76
87
  pages: number;
77
88
  total: number;
78
89
  }>;
79
- get<T extends AnyJob>(job: T, id: string): Promise<Pick<Job<any, any, string>, "name" | "data" | "id" | "queueName" | "priority" | "progress" | "returnvalue" | "attemptsMade" | "processedOn" | "finishedOn" | "failedReason"> | null>;
90
+ get<T extends AnyJob>(job: T, id: string): Promise<JobItem<AnyJob> | null>;
80
91
  add<T extends AnyJob>(job: T, data: T['_']['input'], { forceMissingWorkers, jobId, priority, attempts, backoff, oneoff, delay, }?: QueueJobAddOptions): Promise<QueueJobResult<T>>;
92
+ retry(job: AnyJob, id: string, options?: {
93
+ clearState?: boolean;
94
+ }): Promise<void>;
95
+ remove(job: AnyJob, id: string): Promise<void>;
81
96
  cancel(job: AnyJob, id: string): Promise<void>;
82
97
  cancellationSignal(job: AnyJob, id: string): AbortSignal & {
83
98
  [Symbol.dispose]: () => void;
84
99
  };
85
100
  getQueue(job: AnyJob): JobQueueEntry;
86
- protected _mapJob(bullJob: Job): Pick<Job<any, any, string>, "name" | "data" | "id" | "queueName" | "priority" | "progress" | "returnvalue" | "attemptsMade" | "processedOn" | "finishedOn" | "failedReason">;
101
+ protected _mapJob(bullJob: Job): Promise<JobItem>;
87
102
  }
88
103
  export {};
@@ -1,11 +1,8 @@
1
+ import assert from 'node:assert';
1
2
  import { randomUUID } from 'node:crypto';
2
3
  import { pick } from '@nmtjs/core';
3
- import { t } from '@nmtjs/type';
4
4
  import { Queue, QueueEvents, QueueEventsProducer, UnrecoverableError, } from 'bullmq';
5
- import { JobWorkerPool } from "../enums.js";
6
5
  import { createStoreClient } from "../store/index.js";
7
- import { createJob } from "./job.js";
8
- import { createStep } from "./step.js";
9
6
  /**
10
7
  * Get the dedicated BullMQ queue name for a job
11
8
  */
@@ -45,6 +42,9 @@ export class JobManager {
45
42
  list: this.list.bind(this),
46
43
  add: this.add.bind(this),
47
44
  get: this.get.bind(this),
45
+ retry: this.retry.bind(this),
46
+ remove: this.remove.bind(this),
47
+ cancel: this.cancel.bind(this),
48
48
  };
49
49
  }
50
50
  async initialize() {
@@ -94,16 +94,15 @@ export class JobManager {
94
94
  if (page > totalPages)
95
95
  return [];
96
96
  const jobs = await queue.getJobs(state, (page - 1) * limit, page * limit - 1);
97
- const items = jobs.map((job) => this._mapJob(job));
97
+ const items = await Promise.all(jobs.map((job) => this._mapJob(job)));
98
98
  return { items, page, limit, pages: totalPages, total: jobsCount };
99
99
  }
100
100
  async get(job, id) {
101
101
  const { queue } = this.getJobQueue(job);
102
- job.steps;
103
102
  const bullJob = await queue.getJob(id);
104
103
  if (!bullJob)
105
104
  return null;
106
- return this._mapJob(bullJob);
105
+ return await this._mapJob(bullJob);
107
106
  }
108
107
  async add(job, data, { forceMissingWorkers = false, jobId = randomUUID(), priority, attempts = job.options.attempts, backoff = job.options.backoff, oneoff = job.options.oneoff ?? true, delay, } = {}) {
109
108
  const { queue, events } = this.getJobQueue(job);
@@ -123,6 +122,27 @@ export class JobManager {
123
122
  });
124
123
  return new QueueJobResult({ job, bullJob, events });
125
124
  }
125
+ async retry(job, id, options) {
126
+ const { queue } = this.getJobQueue(job);
127
+ const bullJob = await queue.getJob(id);
128
+ if (!bullJob)
129
+ throw new Error(`Job with id [${id}] not found`);
130
+ const state = await bullJob.getState();
131
+ // For completed jobs, clear state by default so it reruns from scratch
132
+ // For failed jobs, keep state by default so it resumes from checkpoint
133
+ const shouldClearState = options?.clearState ?? state === 'completed';
134
+ if (shouldClearState) {
135
+ await bullJob.updateProgress({});
136
+ }
137
+ await bullJob.retry();
138
+ }
139
+ async remove(job, id) {
140
+ const { queue } = this.getJobQueue(job);
141
+ const bullJob = await queue.getJob(id);
142
+ if (!bullJob)
143
+ throw new Error(`Job with id [${id}] not found`);
144
+ await bullJob.remove();
145
+ }
126
146
  async cancel(job, id) {
127
147
  const { custom, queue } = this.getJobQueue(job);
128
148
  const bullJob = await queue.getJob(id);
@@ -154,20 +174,27 @@ export class JobManager {
154
174
  getQueue(job) {
155
175
  return this.getJobQueue(job);
156
176
  }
157
- _mapJob(bullJob) {
158
- return pick(bullJob, {
159
- id: true,
160
- queueName: true,
161
- priority: true,
162
- progress: true,
163
- name: true,
164
- data: true,
165
- returnvalue: true,
166
- attemptsMade: true,
167
- processedOn: true,
168
- finishedOn: true,
169
- failedReason: true,
170
- });
177
+ async _mapJob(bullJob) {
178
+ const status = await bullJob.getState();
179
+ const id = bullJob.id;
180
+ assert(typeof id === 'string', 'Expected job id to be a string');
181
+ return {
182
+ ...pick(bullJob, {
183
+ queueName: true,
184
+ priority: true,
185
+ progress: true,
186
+ name: true,
187
+ data: true,
188
+ returnvalue: true,
189
+ attemptsMade: true,
190
+ processedOn: true,
191
+ finishedOn: true,
192
+ failedReason: true,
193
+ stacktrace: true,
194
+ }),
195
+ id,
196
+ status,
197
+ };
171
198
  }
172
199
  }
173
200
  //# sourceMappingURL=manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/runtime/jobs/manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/runtime/jobs/manager.ts"],"names":[],"mappings":"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"}