@falcondev-oss/workflow 0.4.0 → 0.5.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/index.d.mts +5 -0
- package/dist/index.mjs +30 -19
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -14,10 +14,15 @@ declare class WorkflowInputError extends UnrecoverableError {
|
|
|
14
14
|
}
|
|
15
15
|
//#endregion
|
|
16
16
|
//#region src/settings.d.ts
|
|
17
|
+
type WorkflowLogger = {
|
|
18
|
+
info?: (...data: any[]) => void;
|
|
19
|
+
success?: (...data: any[]) => void;
|
|
20
|
+
};
|
|
17
21
|
declare const Settings: {
|
|
18
22
|
defaultPrefix: string;
|
|
19
23
|
defaultConnection: IORedis | undefined;
|
|
20
24
|
defaultCronTimezone: string | undefined;
|
|
25
|
+
logger: WorkflowLogger | undefined;
|
|
21
26
|
};
|
|
22
27
|
//#endregion
|
|
23
28
|
//#region src/serializer.d.ts
|
package/dist/index.mjs
CHANGED
|
@@ -20,7 +20,8 @@ var WorkflowInputError = class extends UnrecoverableError {
|
|
|
20
20
|
const Settings = {
|
|
21
21
|
defaultPrefix: "falcondev-oss-workflow",
|
|
22
22
|
defaultConnection: void 0,
|
|
23
|
-
defaultCronTimezone: void 0
|
|
23
|
+
defaultCronTimezone: void 0,
|
|
24
|
+
logger: void 0
|
|
24
25
|
};
|
|
25
26
|
const defaultRedisConnection = createSingletonPromise(async () => {
|
|
26
27
|
if (Settings.defaultConnection) return Settings.defaultConnection;
|
|
@@ -61,22 +62,26 @@ function getTracer() {
|
|
|
61
62
|
return trace.getTracer("falcondev-oss-workflow");
|
|
62
63
|
}
|
|
63
64
|
async function runWithTracing(spanName, options, fn, context$1) {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
65
|
+
return context$1 ? getTracer().startActiveSpan(spanName, options, context$1, runWithSpan(fn)) : getTracer().startActiveSpan(spanName, options, runWithSpan(fn));
|
|
66
|
+
}
|
|
67
|
+
function runWithSpan(fn) {
|
|
68
|
+
return async (span) => {
|
|
69
|
+
try {
|
|
70
|
+
const result = await fn(span);
|
|
71
|
+
span.setStatus({ code: SpanStatusCode.OK });
|
|
72
|
+
return result;
|
|
73
|
+
} catch (err_) {
|
|
74
|
+
const err = err_;
|
|
75
|
+
span.recordException(err);
|
|
76
|
+
span.setStatus({
|
|
77
|
+
code: SpanStatusCode.ERROR,
|
|
78
|
+
message: err.message
|
|
79
|
+
});
|
|
80
|
+
throw err_;
|
|
81
|
+
} finally {
|
|
82
|
+
span.end();
|
|
83
|
+
}
|
|
84
|
+
};
|
|
80
85
|
}
|
|
81
86
|
|
|
82
87
|
//#endregion
|
|
@@ -199,6 +204,7 @@ var Workflow = class {
|
|
|
199
204
|
async work(opts) {
|
|
200
205
|
const queue = await this.getOrCreateQueue();
|
|
201
206
|
await new Worker(this.opts.id, async (job) => {
|
|
207
|
+
Settings.logger?.info?.(`Processing workflow job ${job.id} of workflow ${this.opts.id}`);
|
|
202
208
|
const jobId = job.id;
|
|
203
209
|
if (!jobId) throw new Error("Job ID is missing");
|
|
204
210
|
const deserializedData = deserialize$1(job.data);
|
|
@@ -211,7 +217,8 @@ var Workflow = class {
|
|
|
211
217
|
},
|
|
212
218
|
kind: SpanKind.CONSUMER
|
|
213
219
|
}, async (span) => {
|
|
214
|
-
|
|
220
|
+
const start = performance.now();
|
|
221
|
+
const result = await this.opts.run({
|
|
215
222
|
input: parsedData?.value,
|
|
216
223
|
step: new WorkflowStep({
|
|
217
224
|
queue,
|
|
@@ -219,13 +226,17 @@ var Workflow = class {
|
|
|
219
226
|
workflowId: this.opts.id
|
|
220
227
|
}),
|
|
221
228
|
span
|
|
222
|
-
})
|
|
229
|
+
});
|
|
230
|
+
const end = performance.now();
|
|
231
|
+
Settings.logger?.success?.(`Completed workflow job ${job.id} of workflow ${this.opts.id} in ${(end - start).toFixed(2)} ms`);
|
|
232
|
+
return serialize$1(result);
|
|
223
233
|
}, propagation.extract(ROOT_CONTEXT, deserializedData.tracingHeaders));
|
|
224
234
|
}, {
|
|
225
235
|
connection: this.opts.connection ?? await defaultRedisConnection(),
|
|
226
236
|
prefix: Settings.defaultPrefix,
|
|
227
237
|
...opts
|
|
228
238
|
}).waitUntilReady();
|
|
239
|
+
Settings.logger?.info?.(`Worker started for workflow ${this.opts.id}`);
|
|
229
240
|
return this;
|
|
230
241
|
}
|
|
231
242
|
async run(input, opts) {
|
package/package.json
CHANGED