duron 0.2.1 → 0.3.0-beta.0
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/action-job.d.ts +2 -0
- package/dist/action-job.d.ts.map +1 -1
- package/dist/action-job.js +20 -1
- package/dist/action-manager.d.ts +2 -0
- package/dist/action-manager.d.ts.map +1 -1
- package/dist/action-manager.js +3 -0
- package/dist/action.d.ts +7 -0
- package/dist/action.d.ts.map +1 -1
- package/dist/action.js +1 -0
- package/dist/adapters/adapter.d.ts +10 -2
- package/dist/adapters/adapter.d.ts.map +1 -1
- package/dist/adapters/adapter.js +59 -1
- package/dist/adapters/postgres/base.d.ts +9 -4
- package/dist/adapters/postgres/base.d.ts.map +1 -1
- package/dist/adapters/postgres/base.js +269 -19
- package/dist/adapters/postgres/schema.d.ts +249 -105
- package/dist/adapters/postgres/schema.d.ts.map +1 -1
- package/dist/adapters/postgres/schema.default.d.ts +249 -106
- package/dist/adapters/postgres/schema.default.d.ts.map +1 -1
- package/dist/adapters/postgres/schema.default.js +2 -2
- package/dist/adapters/postgres/schema.js +29 -1
- package/dist/adapters/schemas.d.ts +140 -7
- package/dist/adapters/schemas.d.ts.map +1 -1
- package/dist/adapters/schemas.js +52 -4
- package/dist/client.d.ts +8 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +29 -1
- package/dist/errors.d.ts +6 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +16 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/server.d.ts +220 -16
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +123 -8
- package/dist/step-manager.d.ts +8 -2
- package/dist/step-manager.d.ts.map +1 -1
- package/dist/step-manager.js +138 -15
- package/dist/telemetry/adapter.d.ts +85 -0
- package/dist/telemetry/adapter.d.ts.map +1 -0
- package/dist/telemetry/adapter.js +128 -0
- package/dist/telemetry/index.d.ts +5 -0
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/telemetry/index.js +4 -0
- package/dist/telemetry/local.d.ts +21 -0
- package/dist/telemetry/local.d.ts.map +1 -0
- package/dist/telemetry/local.js +180 -0
- package/dist/telemetry/noop.d.ts +16 -0
- package/dist/telemetry/noop.d.ts.map +1 -0
- package/dist/telemetry/noop.js +39 -0
- package/dist/telemetry/opentelemetry.d.ts +24 -0
- package/dist/telemetry/opentelemetry.d.ts.map +1 -0
- package/dist/telemetry/opentelemetry.js +202 -0
- package/migrations/postgres/20260117231749_clumsy_penance/migration.sql +3 -0
- package/migrations/postgres/20260117231749_clumsy_penance/snapshot.json +988 -0
- package/migrations/postgres/20260118202533_wealthy_mysterio/migration.sql +24 -0
- package/migrations/postgres/20260118202533_wealthy_mysterio/snapshot.json +1362 -0
- package/package.json +6 -4
- package/src/action-job.ts +35 -0
- package/src/action-manager.ts +5 -0
- package/src/action.ts +56 -0
- package/src/adapters/adapter.ts +151 -0
- package/src/adapters/postgres/base.ts +342 -23
- package/src/adapters/postgres/schema.default.ts +2 -2
- package/src/adapters/postgres/schema.ts +49 -1
- package/src/adapters/schemas.ts +81 -5
- package/src/client.ts +80 -2
- package/src/errors.ts +45 -1
- package/src/index.ts +3 -1
- package/src/server.ts +163 -8
- package/src/step-manager.ts +232 -13
- package/src/telemetry/adapter.ts +468 -0
- package/src/telemetry/index.ts +17 -0
- package/src/telemetry/local.ts +336 -0
- package/src/telemetry/noop.ts +95 -0
- package/src/telemetry/opentelemetry.ts +310 -0
package/dist/action-job.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Logger } from 'pino';
|
|
2
2
|
import type { Action } from './action.js';
|
|
3
3
|
import type { Adapter } from './adapters/adapter.js';
|
|
4
|
+
import type { TelemetryAdapter } from './telemetry/adapter.js';
|
|
4
5
|
export interface ActionJobOptions<TAction extends Action<any, any, any>> {
|
|
5
6
|
job: {
|
|
6
7
|
id: string;
|
|
@@ -11,6 +12,7 @@ export interface ActionJobOptions<TAction extends Action<any, any, any>> {
|
|
|
11
12
|
};
|
|
12
13
|
action: TAction;
|
|
13
14
|
database: Adapter;
|
|
15
|
+
telemetry: TelemetryAdapter;
|
|
14
16
|
variables: Record<string, unknown>;
|
|
15
17
|
logger: Logger;
|
|
16
18
|
}
|
package/dist/action-job.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-job.d.ts","sourceRoot":"","sources":["../src/action-job.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAElC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"action-job.d.ts","sourceRoot":"","sources":["../src/action-job.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAElC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAGpD,OAAO,KAAK,EAAQ,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAGpE,MAAM,WAAW,gBAAgB,CAAC,OAAO,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACrE,GAAG,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAA;IACxF,MAAM,EAAE,OAAO,CAAA;IACf,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,gBAAgB,CAAA;IAC3B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAClC,MAAM,EAAE,MAAM,CAAA;CACf;AAQD,qBAAa,SAAS,CAAC,OAAO,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;;gBAuB9C,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC;IAsCxC,OAAO;IA2Hb,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ5B,MAAM;CAmBP"}
|
package/dist/action-job.js
CHANGED
|
@@ -5,6 +5,7 @@ export class ActionJob {
|
|
|
5
5
|
#job;
|
|
6
6
|
#action;
|
|
7
7
|
#database;
|
|
8
|
+
#telemetry;
|
|
8
9
|
#variables;
|
|
9
10
|
#logger;
|
|
10
11
|
#stepManager;
|
|
@@ -12,10 +13,12 @@ export class ActionJob {
|
|
|
12
13
|
#timeoutId = null;
|
|
13
14
|
#done;
|
|
14
15
|
#resolve = null;
|
|
16
|
+
#jobSpan = null;
|
|
15
17
|
constructor(options) {
|
|
16
18
|
this.#job = options.job;
|
|
17
19
|
this.#action = options.action;
|
|
18
20
|
this.#database = options.database;
|
|
21
|
+
this.#telemetry = options.telemetry;
|
|
19
22
|
this.#variables = options.variables;
|
|
20
23
|
this.#logger = options.logger;
|
|
21
24
|
this.#abortController = new AbortController();
|
|
@@ -23,6 +26,7 @@ export class ActionJob {
|
|
|
23
26
|
jobId: options.job.id,
|
|
24
27
|
actionName: options.job.actionName,
|
|
25
28
|
adapter: options.database,
|
|
29
|
+
telemetry: options.telemetry,
|
|
26
30
|
logger: options.logger,
|
|
27
31
|
concurrencyLimit: options.action.concurrency,
|
|
28
32
|
});
|
|
@@ -31,12 +35,20 @@ export class ActionJob {
|
|
|
31
35
|
});
|
|
32
36
|
}
|
|
33
37
|
async execute() {
|
|
38
|
+
this.#jobSpan = await this.#telemetry.startJobSpan({
|
|
39
|
+
jobId: this.#job.id,
|
|
40
|
+
actionName: this.#action.name,
|
|
41
|
+
groupKey: this.#job.groupKey,
|
|
42
|
+
input: this.#job.input,
|
|
43
|
+
});
|
|
44
|
+
this.#stepManager.setJobSpan(this.#jobSpan);
|
|
34
45
|
try {
|
|
35
46
|
const jobLogger = this.#logger.child({
|
|
36
47
|
jobId: this.#job.id,
|
|
37
48
|
actionName: this.#action.name,
|
|
38
49
|
});
|
|
39
|
-
const
|
|
50
|
+
const observeContext = this.#telemetry.createObserveContext(this.#job.id, null, this.#jobSpan);
|
|
51
|
+
const ctx = this.#stepManager.createActionContext(this.#job, this.#action, this.#variables, this.#abortController.signal, jobLogger, observeContext);
|
|
40
52
|
this.#timeoutId = setTimeout(() => {
|
|
41
53
|
const timeoutError = new ActionTimeoutError(this.#action.name, this.#job.timeoutMs);
|
|
42
54
|
this.#abortController.abort(timeoutError);
|
|
@@ -68,6 +80,7 @@ export class ActionJob {
|
|
|
68
80
|
throw new Error('Job not completed');
|
|
69
81
|
}
|
|
70
82
|
this.#logger.debug({ jobId: this.#job.id, actionName: this.#action.name }, '[ActionJob] Action finished executing');
|
|
83
|
+
await this.#telemetry.endJobSpan(this.#jobSpan, { status: 'ok' });
|
|
71
84
|
return result;
|
|
72
85
|
}
|
|
73
86
|
catch (error) {
|
|
@@ -75,6 +88,9 @@ export class ActionJob {
|
|
|
75
88
|
(error instanceof Error && error.name === 'AbortError' && isCancelError(error.cause))) {
|
|
76
89
|
this.#logger.warn({ jobId: this.#job.id, actionName: this.#action.name }, '[ActionJob] Job cancelled');
|
|
77
90
|
await this.#database.cancelJob({ jobId: this.#job.id });
|
|
91
|
+
if (this.#jobSpan) {
|
|
92
|
+
await this.#telemetry.endJobSpan(this.#jobSpan, { status: 'cancelled' });
|
|
93
|
+
}
|
|
78
94
|
return;
|
|
79
95
|
}
|
|
80
96
|
const message = error instanceof ActionTimeoutError
|
|
@@ -84,6 +100,9 @@ export class ActionJob {
|
|
|
84
100
|
: '[ActionJob] Job failed';
|
|
85
101
|
this.#logger.error({ jobId: this.#job.id, actionName: this.#action.name }, message);
|
|
86
102
|
await this.#database.failJob({ jobId: this.#job.id, error: serializeError(error) });
|
|
103
|
+
if (this.#jobSpan) {
|
|
104
|
+
await this.#telemetry.endJobSpan(this.#jobSpan, { status: 'error', error });
|
|
105
|
+
}
|
|
87
106
|
throw error;
|
|
88
107
|
}
|
|
89
108
|
finally {
|
package/dist/action-manager.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import type { Logger } from 'pino';
|
|
2
2
|
import type { Action } from './action.js';
|
|
3
3
|
import type { Adapter, Job } from './adapters/adapter.js';
|
|
4
|
+
import type { TelemetryAdapter } from './telemetry/adapter.js';
|
|
4
5
|
export interface ActionManagerOptions<TAction extends Action<any, any, any>> {
|
|
5
6
|
action: TAction;
|
|
6
7
|
database: Adapter;
|
|
8
|
+
telemetry: TelemetryAdapter;
|
|
7
9
|
variables: Record<string, unknown>;
|
|
8
10
|
logger: Logger;
|
|
9
11
|
concurrencyLimit: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-manager.d.ts","sourceRoot":"","sources":["../src/action-manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAElC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"action-manager.d.ts","sourceRoot":"","sources":["../src/action-manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAElC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAE9D,MAAM,WAAW,oBAAoB,CAAC,OAAO,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACzE,MAAM,EAAE,OAAO,CAAA;IACf,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,gBAAgB,CAAA;IAC3B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAQD,qBAAa,aAAa,CAAC,OAAO,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;;gBAoBlD,OAAO,EAAE,oBAAoB,CAAC,OAAO,CAAC;IA4B5C,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAUnC,SAAS,CAAC,KAAK,EAAE,MAAM;IAYvB,QAAQ,IAAI,IAAI;IAWV,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IASxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAUtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CA+C5B"}
|
package/dist/action-manager.js
CHANGED
|
@@ -3,6 +3,7 @@ import { ActionJob } from './action-job.js';
|
|
|
3
3
|
export class ActionManager {
|
|
4
4
|
#action;
|
|
5
5
|
#database;
|
|
6
|
+
#telemetry;
|
|
6
7
|
#variables;
|
|
7
8
|
#logger;
|
|
8
9
|
#queue;
|
|
@@ -12,6 +13,7 @@ export class ActionManager {
|
|
|
12
13
|
constructor(options) {
|
|
13
14
|
this.#action = options.action;
|
|
14
15
|
this.#database = options.database;
|
|
16
|
+
this.#telemetry = options.telemetry;
|
|
15
17
|
this.#variables = options.variables;
|
|
16
18
|
this.#logger = options.logger;
|
|
17
19
|
this.#concurrencyLimit = options.concurrencyLimit;
|
|
@@ -64,6 +66,7 @@ export class ActionManager {
|
|
|
64
66
|
},
|
|
65
67
|
action: this.#action,
|
|
66
68
|
database: this.#database,
|
|
69
|
+
telemetry: this.#telemetry,
|
|
67
70
|
variables: this.#variables,
|
|
68
71
|
logger: this.#logger,
|
|
69
72
|
});
|
package/dist/action.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Logger } from 'pino';
|
|
2
2
|
import * as z from 'zod';
|
|
3
|
+
import type { ObserveContext } from './telemetry/adapter.js';
|
|
3
4
|
export type RetryOptions = z.infer<typeof RetryOptionsSchema>;
|
|
4
5
|
export type StepOptions = z.infer<typeof StepOptionsSchema>;
|
|
5
6
|
export interface ActionHandlerContext<TInput extends z.ZodObject, TVariables = Record<string, unknown>> {
|
|
@@ -8,10 +9,15 @@ export interface ActionHandlerContext<TInput extends z.ZodObject, TVariables = R
|
|
|
8
9
|
groupKey: string;
|
|
9
10
|
var: TVariables;
|
|
10
11
|
logger: Logger;
|
|
12
|
+
observe: ObserveContext;
|
|
11
13
|
step: <TResult>(name: string, cb: (ctx: StepHandlerContext) => Promise<TResult>, options?: z.input<typeof StepOptionsSchema>) => Promise<TResult>;
|
|
12
14
|
}
|
|
13
15
|
export interface StepHandlerContext {
|
|
14
16
|
signal: AbortSignal;
|
|
17
|
+
stepId: string;
|
|
18
|
+
parentStepId: string | null;
|
|
19
|
+
observe: ObserveContext;
|
|
20
|
+
step: <TResult>(name: string, cb: (ctx: StepHandlerContext) => Promise<TResult>, options?: z.input<typeof StepOptionsSchema>) => Promise<TResult>;
|
|
15
21
|
}
|
|
16
22
|
export interface ConcurrencyHandlerContext<TInput extends z.ZodObject, TVariables = Record<string, unknown>> {
|
|
17
23
|
input: z.infer<TInput>;
|
|
@@ -33,6 +39,7 @@ export declare const StepOptionsSchema: z.ZodObject<{
|
|
|
33
39
|
maxTimeout: z.ZodDefault<z.ZodNumber>;
|
|
34
40
|
}, z.core.$strip>>;
|
|
35
41
|
expire: z.ZodDefault<z.ZodNumber>;
|
|
42
|
+
parallel: z.ZodDefault<z.ZodBoolean>;
|
|
36
43
|
}, z.core.$strip>;
|
|
37
44
|
export declare function createActionDefinitionSchema<TInput extends z.ZodObject, TOutput extends z.ZodObject, TVariables = Record<string, unknown>>(): z.ZodPipe<z.ZodObject<{
|
|
38
45
|
name: z.ZodString;
|
package/dist/action.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../src/action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAClC,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../src/action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAClC,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAExB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAG5D,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAE7D,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAE3D,MAAM,WAAW,oBAAoB,CAAC,MAAM,SAAS,CAAC,CAAC,SAAS,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACpG,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE,UAAU,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IAMd,OAAO,EAAE,cAAc,CAAA;IAEvB,IAAI,EAAE,CAAC,OAAO,EACZ,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,OAAO,CAAC,OAAO,CAAC,EACjD,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,KACxC,OAAO,CAAC,OAAO,CAAC,CAAA;CACtB;AAED,MAAM,WAAW,kBAAkB;IAQjC,MAAM,EAAE,WAAW,CAAA;IAKnB,MAAM,EAAE,MAAM,CAAA;IAKd,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAM3B,OAAO,EAAE,cAAc,CAAA;IAYvB,IAAI,EAAE,CAAC,OAAO,EACZ,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,OAAO,CAAC,OAAO,CAAC,EACjD,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,KACxC,OAAO,CAAC,OAAO,CAAC,CAAA;CACtB;AAED,MAAM,WAAW,yBAAyB,CAAC,MAAM,SAAS,CAAC,CAAC,SAAS,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACzG,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IACtB,GAAG,EAAE,UAAU,CAAA;CAChB;AAED,MAAM,MAAM,gBAAgB,CAC1B,MAAM,SAAS,CAAC,CAAC,SAAS,EAC1B,OAAO,SAAS,CAAC,CAAC,SAAS,EAC3B,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAClC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,4BAA4B,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;AAEzF,MAAM,MAAM,MAAM,CAChB,MAAM,SAAS,CAAC,CAAC,SAAS,EAC1B,OAAO,SAAS,CAAC,CAAC,SAAS,EAC3B,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAClC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,4BAA4B,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;AAKzF,eAAO,MAAM,kBAAkB;;;;;kBAiCC,CAAA;AAKhC,eAAO,MAAM,iBAAiB;;;;;;;;;iBA0B5B,CAAA;AAUF,wBAAgB,4BAA4B,CAC1C,MAAM,SAAS,CAAC,CAAC,SAAS,EAC1B,OAAO,SAAS,CAAC,CAAC,SAAS,EAC3B,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;kDAkDZ,yBAAyB,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,QAAjE,yBAAyB,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC;qDAejE,yBAAyB,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,QAAjE,yBAAyB,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC;;;;;;;;;;;;;;+BA6CrE,oBAAoB,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,QAAtE,oBAAoB,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;;;;;;;;;;;;;;;;mBAAtE,oBAAoB,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;;;;;0BA5DlE,yBAAyB,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC;6BAejE,yBAAyB,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC;;;;;;;;;;;;;;;;mBA6CrE,oBAAoB,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;;;;;0BA5DlE,yBAAyB,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC;6BAejE,yBAAyB,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC;;IAyD1F;AAED,eAAO,MAAM,YAAY,GAAI,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,QACvD,MAAM,SAAS,CAAC,CAAC,SAAS,EAAE,OAAO,SAAS,CAAC,CAAC,SAAS,EAC7D,KAAK,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;4EA5EsB,OAAO,CAAC,MAAM,CAAC;+EAef,OAAO,CAAC,MAAM,CAAC;;CAmE1F,CAAA"}
|
package/dist/action.js
CHANGED
|
@@ -15,6 +15,7 @@ export const StepOptionsSchema = z.object({
|
|
|
15
15
|
.number()
|
|
16
16
|
.default(5 * 60 * 1000)
|
|
17
17
|
.describe('The expire time for the step (milliseconds)'),
|
|
18
|
+
parallel: z.boolean().default(false).describe('Whether this step runs in parallel (independent from siblings)'),
|
|
18
19
|
});
|
|
19
20
|
export function createActionDefinitionSchema() {
|
|
20
21
|
return z
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { EventEmitter } from 'node:events';
|
|
2
2
|
import type { Logger } from 'pino';
|
|
3
3
|
import { type JobStatus, type StepStatus } from '../constants.js';
|
|
4
|
-
import type { CancelJobOptions, CancelJobStepOptions, CompleteJobOptions, CompleteJobStepOptions, CreateJobOptions, CreateOrRecoverJobStepOptions, CreateOrRecoverJobStepResult, DelayJobStepOptions, DeleteJobOptions, DeleteJobsOptions, FailJobOptions, FailJobStepOptions, FetchOptions, GetActionsResult, GetJobStepsOptions, GetJobStepsResult, GetJobsOptions, GetJobsResult, Job, JobStatusResult, JobStep, JobStepStatusResult, RecoverJobsOptions, RetryJobOptions } from './schemas.js';
|
|
5
|
-
export type { ActionStats, CancelJobOptions, CancelJobStepOptions, CompleteJobOptions, CompleteJobStepOptions, CreateJobOptions, CreateOrRecoverJobStepOptions, CreateOrRecoverJobStepResult, DelayJobStepOptions, DeleteJobOptions, DeleteJobsOptions, FailJobOptions, FailJobStepOptions, FetchOptions, GetActionsResult, GetJobStepsOptions, GetJobStepsResult, GetJobsOptions, GetJobsResult, Job, JobFilters, JobSort, JobSortField, JobStatusResult, JobStep, JobStepStatusResult, RecoverJobsOptions, RetryJobOptions, SortOrder, } from './schemas.js';
|
|
4
|
+
import type { CancelJobOptions, CancelJobStepOptions, CompleteJobOptions, CompleteJobStepOptions, CreateJobOptions, CreateOrRecoverJobStepOptions, CreateOrRecoverJobStepResult, DelayJobStepOptions, DeleteJobOptions, DeleteJobsOptions, DeleteMetricsOptions, FailJobOptions, FailJobStepOptions, FetchOptions, GetActionsResult, GetJobStepsOptions, GetJobStepsResult, GetJobsOptions, GetJobsResult, GetMetricsOptions, GetMetricsResult, InsertMetricOptions, Job, JobStatusResult, JobStep, JobStepStatusResult, RecoverJobsOptions, RetryJobOptions, TimeTravelJobOptions } from './schemas.js';
|
|
5
|
+
export type { ActionStats, CancelJobOptions, CancelJobStepOptions, CompleteJobOptions, CompleteJobStepOptions, CreateJobOptions, CreateOrRecoverJobStepOptions, CreateOrRecoverJobStepResult, DelayJobStepOptions, DeleteJobOptions, DeleteJobsOptions, DeleteMetricsOptions, FailJobOptions, FailJobStepOptions, FetchOptions, GetActionsResult, GetJobStepsOptions, GetJobStepsResult, GetJobsOptions, GetJobsResult, GetMetricsOptions, GetMetricsResult, InsertMetricOptions, Job, JobFilters, JobSort, JobSortField, JobStatusResult, JobStep, JobStepStatusResult, Metric, MetricFilters, MetricSort, MetricSortField, MetricType, RecoverJobsOptions, RetryJobOptions, SortOrder, TimeTravelJobOptions, } from './schemas.js';
|
|
6
6
|
export interface AdapterEvents {
|
|
7
7
|
'job-status-changed': [
|
|
8
8
|
{
|
|
@@ -48,6 +48,7 @@ export declare abstract class Adapter extends EventEmitter<AdapterEvents> {
|
|
|
48
48
|
failJob(options: FailJobOptions): Promise<boolean>;
|
|
49
49
|
cancelJob(options: CancelJobOptions): Promise<boolean>;
|
|
50
50
|
retryJob(options: RetryJobOptions): Promise<string | null>;
|
|
51
|
+
timeTravelJob(options: TimeTravelJobOptions): Promise<boolean>;
|
|
51
52
|
deleteJob(options: DeleteJobOptions): Promise<boolean>;
|
|
52
53
|
deleteJobs(options?: DeleteJobsOptions): Promise<number>;
|
|
53
54
|
fetch(options: FetchOptions): Promise<Job[]>;
|
|
@@ -62,6 +63,7 @@ export declare abstract class Adapter extends EventEmitter<AdapterEvents> {
|
|
|
62
63
|
protected abstract _failJob(options: FailJobOptions): Promise<boolean>;
|
|
63
64
|
protected abstract _cancelJob(options: CancelJobOptions): Promise<boolean>;
|
|
64
65
|
protected abstract _retryJob(options: RetryJobOptions): Promise<string | null>;
|
|
66
|
+
protected abstract _timeTravelJob(options: TimeTravelJobOptions): Promise<boolean>;
|
|
65
67
|
protected abstract _deleteJob(options: DeleteJobOptions): Promise<boolean>;
|
|
66
68
|
protected abstract _deleteJobs(options?: DeleteJobsOptions): Promise<number>;
|
|
67
69
|
protected abstract _fetch(options: FetchOptions): Promise<Job[]>;
|
|
@@ -85,6 +87,12 @@ export declare abstract class Adapter extends EventEmitter<AdapterEvents> {
|
|
|
85
87
|
protected abstract _getJobStatus(jobId: string): Promise<JobStatusResult | null>;
|
|
86
88
|
protected abstract _getJobStepStatus(stepId: string): Promise<JobStepStatusResult | null>;
|
|
87
89
|
protected abstract _getActions(): Promise<GetActionsResult>;
|
|
90
|
+
insertMetrics(metrics: InsertMetricOptions[]): Promise<number>;
|
|
91
|
+
getMetrics(options: GetMetricsOptions): Promise<GetMetricsResult>;
|
|
92
|
+
deleteMetrics(options: DeleteMetricsOptions): Promise<number>;
|
|
93
|
+
protected abstract _insertMetrics(metrics: InsertMetricOptions[]): Promise<number>;
|
|
94
|
+
protected abstract _getMetrics(options: GetMetricsOptions): Promise<GetMetricsResult>;
|
|
95
|
+
protected abstract _deleteMetrics(options: DeleteMetricsOptions): Promise<number>;
|
|
88
96
|
protected abstract _start(): Promise<void>;
|
|
89
97
|
protected abstract _stop(): Promise<void>;
|
|
90
98
|
protected abstract _notify(event: string, data: any): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAGlC,OAAO,EAIL,KAAK,SAAS,EAId,KAAK,UAAU,EAChB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EACV,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,EACtB,gBAAgB,EAChB,6BAA6B,EAC7B,4BAA4B,EAC5B,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,GAAG,EACH,eAAe,EACf,OAAO,EACP,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/adapters/adapter.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { EventEmitter } from 'node:events';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { JOB_STATUS_CANCELLED, JOB_STATUS_COMPLETED, JOB_STATUS_FAILED, STEP_STATUS_CANCELLED, STEP_STATUS_COMPLETED, STEP_STATUS_FAILED, } from '../constants.js';
|
|
4
|
-
import { BooleanResultSchema, CancelJobOptionsSchema, CancelJobStepOptionsSchema, CompleteJobOptionsSchema, CompleteJobStepOptionsSchema, CreateJobOptionsSchema, CreateOrRecoverJobStepOptionsSchema, CreateOrRecoverJobStepResultNullableSchema, DelayJobStepOptionsSchema, DeleteJobOptionsSchema, DeleteJobsOptionsSchema, FailJobOptionsSchema, FailJobStepOptionsSchema, FetchOptionsSchema, GetActionsResultSchema, GetJobStepsOptionsSchema, GetJobStepsResultSchema, GetJobsOptionsSchema, GetJobsResultSchema, JobIdResultSchema, JobSchema, JobStatusResultSchema, JobStepSchema, JobStepStatusResultSchema, JobsArrayResultSchema, NumberResultSchema, RecoverJobsOptionsSchema, RetryJobOptionsSchema, } from './schemas.js';
|
|
4
|
+
import { BooleanResultSchema, CancelJobOptionsSchema, CancelJobStepOptionsSchema, CompleteJobOptionsSchema, CompleteJobStepOptionsSchema, CreateJobOptionsSchema, CreateOrRecoverJobStepOptionsSchema, CreateOrRecoverJobStepResultNullableSchema, DelayJobStepOptionsSchema, DeleteJobOptionsSchema, DeleteJobsOptionsSchema, DeleteMetricsOptionsSchema, FailJobOptionsSchema, FailJobStepOptionsSchema, FetchOptionsSchema, GetActionsResultSchema, GetJobStepsOptionsSchema, GetJobStepsResultSchema, GetJobsOptionsSchema, GetJobsResultSchema, GetMetricsOptionsSchema, GetMetricsResultSchema, InsertMetricOptionsSchema, JobIdResultSchema, JobSchema, JobStatusResultSchema, JobStepSchema, JobStepStatusResultSchema, JobsArrayResultSchema, NumberResultSchema, RecoverJobsOptionsSchema, RetryJobOptionsSchema, TimeTravelJobOptionsSchema, } from './schemas.js';
|
|
5
5
|
export class Adapter extends EventEmitter {
|
|
6
6
|
#id;
|
|
7
7
|
#started = false;
|
|
@@ -173,6 +173,22 @@ export class Adapter extends EventEmitter {
|
|
|
173
173
|
throw error;
|
|
174
174
|
}
|
|
175
175
|
}
|
|
176
|
+
async timeTravelJob(options) {
|
|
177
|
+
try {
|
|
178
|
+
await this.start();
|
|
179
|
+
const parsedOptions = TimeTravelJobOptionsSchema.parse(options);
|
|
180
|
+
const result = await this._timeTravelJob(parsedOptions);
|
|
181
|
+
const success = BooleanResultSchema.parse(result);
|
|
182
|
+
if (success) {
|
|
183
|
+
await this._notify('job-available', { jobId: parsedOptions.jobId });
|
|
184
|
+
}
|
|
185
|
+
return success;
|
|
186
|
+
}
|
|
187
|
+
catch (error) {
|
|
188
|
+
this.#logger?.error(error, 'Error in Adapter.timeTravelJob()');
|
|
189
|
+
throw error;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
176
192
|
async deleteJob(options) {
|
|
177
193
|
try {
|
|
178
194
|
await this.start();
|
|
@@ -421,4 +437,46 @@ export class Adapter extends EventEmitter {
|
|
|
421
437
|
throw error;
|
|
422
438
|
}
|
|
423
439
|
}
|
|
440
|
+
async insertMetrics(metrics) {
|
|
441
|
+
try {
|
|
442
|
+
if (metrics.length === 0) {
|
|
443
|
+
return 0;
|
|
444
|
+
}
|
|
445
|
+
await this.start();
|
|
446
|
+
const parsedMetrics = metrics.map((m) => InsertMetricOptionsSchema.parse(m));
|
|
447
|
+
const result = await this._insertMetrics(parsedMetrics);
|
|
448
|
+
return NumberResultSchema.parse(result);
|
|
449
|
+
}
|
|
450
|
+
catch (error) {
|
|
451
|
+
this.#logger?.error(error, 'Error in Adapter.insertMetrics()');
|
|
452
|
+
throw error;
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
async getMetrics(options) {
|
|
456
|
+
try {
|
|
457
|
+
await this.start();
|
|
458
|
+
const parsedOptions = GetMetricsOptionsSchema.parse(options);
|
|
459
|
+
if (!parsedOptions.jobId && !parsedOptions.stepId) {
|
|
460
|
+
throw new Error('At least one of jobId or stepId must be provided');
|
|
461
|
+
}
|
|
462
|
+
const result = await this._getMetrics(parsedOptions);
|
|
463
|
+
return GetMetricsResultSchema.parse(result);
|
|
464
|
+
}
|
|
465
|
+
catch (error) {
|
|
466
|
+
this.#logger?.error(error, 'Error in Adapter.getMetrics()');
|
|
467
|
+
throw error;
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
async deleteMetrics(options) {
|
|
471
|
+
try {
|
|
472
|
+
await this.start();
|
|
473
|
+
const parsedOptions = DeleteMetricsOptionsSchema.parse(options);
|
|
474
|
+
const result = await this._deleteMetrics(parsedOptions);
|
|
475
|
+
return NumberResultSchema.parse(result);
|
|
476
|
+
}
|
|
477
|
+
catch (error) {
|
|
478
|
+
this.#logger?.error(error, 'Error in Adapter.deleteMetrics()');
|
|
479
|
+
throw error;
|
|
480
|
+
}
|
|
481
|
+
}
|
|
424
482
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import { Adapter, type CancelJobOptions, type CancelJobStepOptions, type CompleteJobOptions, type CompleteJobStepOptions, type CreateJobOptions, type CreateOrRecoverJobStepOptions, type CreateOrRecoverJobStepResult, type DelayJobStepOptions, type DeleteJobOptions, type DeleteJobsOptions, type FailJobOptions, type FailJobStepOptions, type FetchOptions, type GetActionsResult, type GetJobStepsOptions, type GetJobStepsResult, type GetJobsOptions, type GetJobsResult, type Job, type JobStatusResult, type JobStep, type JobStepStatusResult, type RecoverJobsOptions, type RetryJobOptions } from '../adapter.js';
|
|
1
|
+
import type { PgAsyncDatabase } from 'drizzle-orm/pg-core';
|
|
2
|
+
import { Adapter, type CancelJobOptions, type CancelJobStepOptions, type CompleteJobOptions, type CompleteJobStepOptions, type CreateJobOptions, type CreateOrRecoverJobStepOptions, type CreateOrRecoverJobStepResult, type DelayJobStepOptions, type DeleteJobOptions, type DeleteJobsOptions, type DeleteMetricsOptions, type FailJobOptions, type FailJobStepOptions, type FetchOptions, type GetActionsResult, type GetJobStepsOptions, type GetJobStepsResult, type GetJobsOptions, type GetJobsResult, type GetMetricsOptions, type GetMetricsResult, type InsertMetricOptions, type Job, type JobStatusResult, type JobStep, type JobStepStatusResult, type RecoverJobsOptions, type RetryJobOptions, type TimeTravelJobOptions } from '../adapter.js';
|
|
3
3
|
import createSchema from './schema.js';
|
|
4
4
|
type Schema = ReturnType<typeof createSchema>;
|
|
5
5
|
export type { Job, JobStep } from '../adapter.js';
|
|
6
|
-
type DrizzleDatabase =
|
|
6
|
+
type DrizzleDatabase = PgAsyncDatabase<any, Schema>;
|
|
7
7
|
export interface AdapterOptions<Connection> {
|
|
8
8
|
connection: Connection;
|
|
9
9
|
schema?: string;
|
|
@@ -26,11 +26,12 @@ export declare class PostgresBaseAdapter<Database extends DrizzleDatabase, Conne
|
|
|
26
26
|
protected _failJob({ jobId, error }: FailJobOptions): Promise<boolean>;
|
|
27
27
|
protected _cancelJob({ jobId }: CancelJobOptions): Promise<boolean>;
|
|
28
28
|
protected _retryJob({ jobId }: RetryJobOptions): Promise<string | null>;
|
|
29
|
+
protected _timeTravelJob({ jobId, stepId }: TimeTravelJobOptions): Promise<boolean>;
|
|
29
30
|
protected _deleteJob({ jobId }: DeleteJobOptions): Promise<boolean>;
|
|
30
31
|
protected _deleteJobs(options?: DeleteJobsOptions): Promise<number>;
|
|
31
32
|
protected _fetch({ batch }: FetchOptions): Promise<any>;
|
|
32
33
|
protected _recoverJobs(options: RecoverJobsOptions): Promise<number>;
|
|
33
|
-
protected _createOrRecoverJobStep({ jobId, name, timeoutMs, retriesLimit, }: CreateOrRecoverJobStepOptions): Promise<CreateOrRecoverJobStepResult | null>;
|
|
34
|
+
protected _createOrRecoverJobStep({ jobId, name, timeoutMs, retriesLimit, parentStepId, parallel, }: CreateOrRecoverJobStepOptions): Promise<CreateOrRecoverJobStepResult | null>;
|
|
34
35
|
protected _completeJobStep({ stepId, output }: CompleteJobStepOptions): Promise<boolean>;
|
|
35
36
|
protected _failJobStep({ stepId, error }: FailJobStepOptions): Promise<boolean>;
|
|
36
37
|
protected _delayJobStep({ stepId, delayMs, error }: DelayJobStepOptions): Promise<boolean>;
|
|
@@ -43,6 +44,10 @@ export declare class PostgresBaseAdapter<Database extends DrizzleDatabase, Conne
|
|
|
43
44
|
protected _getJobStatus(jobId: string): Promise<JobStatusResult | null>;
|
|
44
45
|
protected _getJobStepStatus(stepId: string): Promise<JobStepStatusResult | null>;
|
|
45
46
|
protected _getActions(): Promise<GetActionsResult>;
|
|
47
|
+
protected _insertMetrics(metrics: InsertMetricOptions[]): Promise<number>;
|
|
48
|
+
protected _getMetrics(options: GetMetricsOptions): Promise<GetMetricsResult>;
|
|
49
|
+
protected _deleteMetrics(options: DeleteMetricsOptions): Promise<number>;
|
|
50
|
+
protected _buildMetricsWhereClause(jobId?: string, stepId?: string, filters?: GetMetricsOptions['filters']): import("drizzle-orm").SQL<unknown> | undefined;
|
|
46
51
|
protected _notify(_event: string, _data: any): Promise<void>;
|
|
47
52
|
protected _listen(_event: string, _callback: (payload: string) => void): Promise<{
|
|
48
53
|
unlisten: () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/adapters/postgres/base.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/adapters/postgres/base.ts"],"names":[],"mappings":"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"}
|