@versori/run 0.6.0-alpha.1 → 0.6.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.
- package/esm/deps/jsr.io/@std/fmt/1.0.10/colors.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/fmt/{1.0.9 → 1.0.10}/colors.js +2 -2
- package/esm/deps/jsr.io/@std/log/0.224.14/console_handler.js +1 -1
- package/esm/src/connection/internal/CredentialHolder.js +1 -1
- package/esm/src/connection/internal/FetchBuilder.d.ts +2 -9
- package/esm/src/connection/internal/FetchBuilder.d.ts.map +1 -1
- package/esm/src/connection/internal/FetchBuilder.js +3 -124
- package/esm/src/context/Context.d.ts +0 -5
- package/esm/src/context/Context.d.ts.map +1 -1
- package/esm/src/context/Context.js +3 -6
- package/esm/src/context/VanillaContext.d.ts.map +1 -1
- package/esm/src/context/VanillaContext.js +3 -0
- package/esm/src/context/WorkflowClient.d.ts +1 -0
- package/esm/src/context/WorkflowClient.d.ts.map +1 -1
- package/esm/src/context/WorkflowClient.js +3 -0
- package/esm/src/dsl/Workflow.d.ts.map +1 -1
- package/esm/src/dsl/Workflow.js +0 -2
- package/esm/src/dsl/http/types.d.ts +0 -2
- package/esm/src/dsl/http/types.d.ts.map +1 -1
- package/esm/src/dsl/http/versori/configloader.d.ts.map +1 -1
- package/esm/src/dsl/http/versori/configloader.js +1 -1
- package/esm/src/dsl/http/versori/constants.d.ts +21 -0
- package/esm/src/dsl/http/versori/constants.d.ts.map +1 -0
- package/esm/src/dsl/http/versori/constants.js +38 -0
- package/esm/src/dsl/http/versori/cronapi.d.ts +3 -2
- package/esm/src/dsl/http/versori/cronapi.d.ts.map +1 -1
- package/esm/src/dsl/http/versori/cronapi.js +15 -14
- package/esm/src/dsl/http/versori/kvapi/core/OpenAPI.js +1 -1
- package/esm/src/dsl/triggers/WebhookTrigger.d.ts.map +1 -1
- package/esm/src/dsl/triggers/WebhookTrigger.js +1 -3
- package/esm/src/internal/constants.d.ts +0 -3
- package/esm/src/internal/constants.d.ts.map +1 -1
- package/esm/src/internal/constants.js +0 -3
- package/esm/src/interpreter/durable/DurableInterpreter.d.ts +2 -9
- package/esm/src/interpreter/durable/DurableInterpreter.d.ts.map +1 -1
- package/esm/src/interpreter/durable/DurableInterpreter.js +13 -57
- package/esm/src/interpreter/durable/ObservableCompiler.d.ts +1 -6
- package/esm/src/interpreter/durable/ObservableCompiler.d.ts.map +1 -1
- package/esm/src/interpreter/durable/Queue.d.ts +3 -0
- package/esm/src/interpreter/durable/Queue.d.ts.map +1 -1
- package/esm/src/interpreter/durable/Queue.js +1 -1
- package/esm/src/interpreter/durable/compilers/catch.d.ts.map +1 -1
- package/esm/src/interpreter/durable/compilers/catch.js +1 -3
- package/esm/src/interpreter/durable/compilers/durableworkflow.d.ts.map +1 -1
- package/esm/src/interpreter/durable/compilers/durableworkflow.js +21 -6
- package/esm/src/interpreter/durable/compilers/fn.d.ts.map +1 -1
- package/esm/src/interpreter/durable/compilers/fn.js +6 -29
- package/esm/src/interpreter/durable/compilers/http.d.ts.map +1 -1
- package/esm/src/interpreter/durable/compilers/http.js +11 -45
- package/esm/src/interpreter/durable/compilers/schedule.d.ts.map +1 -1
- package/esm/src/interpreter/durable/compilers/schedule.js +3 -4
- package/esm/src/interpreter/durable/compilers/webhook.d.ts.map +1 -1
- package/esm/src/interpreter/durable/compilers/webhook.js +0 -2
- package/esm/src/interpreter/memory/MemoryInterpreter.d.ts +1 -8
- package/esm/src/interpreter/memory/MemoryInterpreter.d.ts.map +1 -1
- package/esm/src/interpreter/memory/MemoryInterpreter.js +12 -56
- package/esm/src/interpreter/memory/ObservableCompiler.d.ts +1 -6
- package/esm/src/interpreter/memory/ObservableCompiler.d.ts.map +1 -1
- package/esm/src/interpreter/memory/compilers/catch.d.ts.map +1 -1
- package/esm/src/interpreter/memory/compilers/catch.js +0 -5
- package/esm/src/interpreter/memory/compilers/fn.d.ts.map +1 -1
- package/esm/src/interpreter/memory/compilers/fn.js +18 -29
- package/esm/src/interpreter/memory/compilers/http.d.ts.map +1 -1
- package/esm/src/interpreter/memory/compilers/http.js +10 -44
- package/esm/src/interpreter/memory/compilers/schedule.d.ts.map +1 -1
- package/esm/src/interpreter/memory/compilers/schedule.js +4 -61
- package/esm/src/interpreter/memory/compilers/webhook.d.ts.map +1 -1
- package/esm/src/interpreter/memory/compilers/webhook.js +3 -9
- package/esm/src/interpreter/vanilla/VanillaInterpreter.d.ts +0 -1
- package/esm/src/interpreter/vanilla/VanillaInterpreter.d.ts.map +1 -1
- package/esm/src/interpreter/vanilla/VanillaInterpreter.js +6 -30
- package/esm/src/interpreter/vanilla/compilers/durableworkflow.d.ts.map +1 -1
- package/esm/src/interpreter/vanilla/compilers/durableworkflow.js +12 -2
- package/esm/src/interpreter/vanilla/compilers/schedule.js +1 -1
- package/esm/src/issues/Issues.d.ts.map +1 -1
- package/esm/src/issues/Issues.js +1 -6
- package/esm/src/kv/KeyValue.d.ts +7 -3
- package/esm/src/kv/KeyValue.d.ts.map +1 -1
- package/esm/src/kv/fingerprintExternalUserId.d.ts +6 -0
- package/esm/src/kv/fingerprintExternalUserId.d.ts.map +1 -0
- package/esm/src/kv/fingerprintExternalUserId.js +20 -0
- package/esm/src/kv/memory/MemoryKeyValueProvider.d.ts +4 -0
- package/esm/src/kv/memory/MemoryKeyValueProvider.d.ts.map +1 -1
- package/esm/src/kv/memory/MemoryKeyValueProvider.js +50 -0
- package/esm/src/kv/nats/NatsKeyValueProvider.d.ts.map +1 -1
- package/esm/src/kv/nats/NatsKeyValueProvider.js +14 -0
- package/esm/src/kv/sdk/SDKKeyValueProvider.d.ts.map +1 -1
- package/esm/src/kv/sdk/SDKKeyValueProvider.js +12 -0
- package/esm/src/observability/logging/ConsoleLogger.d.ts.map +1 -1
- package/esm/src/observability/mod.d.ts +1 -0
- package/esm/src/observability/mod.d.ts.map +1 -1
- package/esm/src/observability/mod.js +1 -0
- package/esm/src/observability/tracePropagation.d.ts +23 -0
- package/esm/src/observability/tracePropagation.d.ts.map +1 -0
- package/esm/src/observability/tracePropagation.js +39 -0
- package/package.json +1 -3
- package/script/deps/jsr.io/@std/fmt/1.0.10/colors.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/fmt/{1.0.9 → 1.0.10}/colors.js +2 -2
- package/script/deps/jsr.io/@std/log/0.224.14/console_handler.js +1 -1
- package/script/src/connection/internal/CredentialHolder.js +1 -1
- package/script/src/connection/internal/FetchBuilder.d.ts +2 -9
- package/script/src/connection/internal/FetchBuilder.d.ts.map +1 -1
- package/script/src/connection/internal/FetchBuilder.js +3 -147
- package/script/src/context/Context.d.ts +0 -5
- package/script/src/context/Context.d.ts.map +1 -1
- package/script/src/context/Context.js +3 -6
- package/script/src/context/VanillaContext.d.ts.map +1 -1
- package/script/src/context/VanillaContext.js +3 -0
- package/script/src/context/WorkflowClient.d.ts +1 -0
- package/script/src/context/WorkflowClient.d.ts.map +1 -1
- package/script/src/context/WorkflowClient.js +3 -0
- package/script/src/dsl/Workflow.d.ts.map +1 -1
- package/script/src/dsl/Workflow.js +0 -2
- package/script/src/dsl/http/types.d.ts +0 -2
- package/script/src/dsl/http/types.d.ts.map +1 -1
- package/script/src/dsl/http/versori/configloader.d.ts.map +1 -1
- package/script/src/dsl/http/versori/configloader.js +1 -1
- package/script/src/dsl/http/versori/constants.d.ts +21 -0
- package/script/src/dsl/http/versori/constants.d.ts.map +1 -0
- package/script/src/dsl/http/versori/constants.js +41 -0
- package/script/src/dsl/http/versori/cronapi.d.ts +3 -2
- package/script/src/dsl/http/versori/cronapi.d.ts.map +1 -1
- package/script/src/dsl/http/versori/cronapi.js +15 -14
- package/script/src/dsl/http/versori/kvapi/core/OpenAPI.js +1 -1
- package/script/src/dsl/triggers/WebhookTrigger.d.ts.map +1 -1
- package/script/src/dsl/triggers/WebhookTrigger.js +1 -3
- package/script/src/internal/constants.d.ts +0 -3
- package/script/src/internal/constants.d.ts.map +1 -1
- package/script/src/internal/constants.js +1 -4
- package/script/src/interpreter/durable/DurableInterpreter.d.ts +2 -9
- package/script/src/interpreter/durable/DurableInterpreter.d.ts.map +1 -1
- package/script/src/interpreter/durable/DurableInterpreter.js +18 -62
- package/script/src/interpreter/durable/ObservableCompiler.d.ts +1 -6
- package/script/src/interpreter/durable/ObservableCompiler.d.ts.map +1 -1
- package/script/src/interpreter/durable/Queue.d.ts +3 -0
- package/script/src/interpreter/durable/Queue.d.ts.map +1 -1
- package/script/src/interpreter/durable/Queue.js +1 -1
- package/script/src/interpreter/durable/compilers/catch.d.ts.map +1 -1
- package/script/src/interpreter/durable/compilers/catch.js +1 -3
- package/script/src/interpreter/durable/compilers/durableworkflow.d.ts.map +1 -1
- package/script/src/interpreter/durable/compilers/durableworkflow.js +21 -6
- package/script/src/interpreter/durable/compilers/fn.d.ts.map +1 -1
- package/script/src/interpreter/durable/compilers/fn.js +5 -28
- package/script/src/interpreter/durable/compilers/http.d.ts.map +1 -1
- package/script/src/interpreter/durable/compilers/http.js +11 -45
- package/script/src/interpreter/durable/compilers/schedule.d.ts.map +1 -1
- package/script/src/interpreter/durable/compilers/schedule.js +3 -4
- package/script/src/interpreter/durable/compilers/webhook.d.ts.map +1 -1
- package/script/src/interpreter/durable/compilers/webhook.js +0 -2
- package/script/src/interpreter/memory/MemoryInterpreter.d.ts +1 -8
- package/script/src/interpreter/memory/MemoryInterpreter.d.ts.map +1 -1
- package/script/src/interpreter/memory/MemoryInterpreter.js +11 -55
- package/script/src/interpreter/memory/ObservableCompiler.d.ts +1 -6
- package/script/src/interpreter/memory/ObservableCompiler.d.ts.map +1 -1
- package/script/src/interpreter/memory/compilers/catch.d.ts.map +1 -1
- package/script/src/interpreter/memory/compilers/catch.js +0 -5
- package/script/src/interpreter/memory/compilers/fn.d.ts.map +1 -1
- package/script/src/interpreter/memory/compilers/fn.js +17 -28
- package/script/src/interpreter/memory/compilers/http.d.ts.map +1 -1
- package/script/src/interpreter/memory/compilers/http.js +10 -44
- package/script/src/interpreter/memory/compilers/schedule.d.ts.map +1 -1
- package/script/src/interpreter/memory/compilers/schedule.js +4 -61
- package/script/src/interpreter/memory/compilers/webhook.d.ts.map +1 -1
- package/script/src/interpreter/memory/compilers/webhook.js +3 -9
- package/script/src/interpreter/vanilla/VanillaInterpreter.d.ts +0 -1
- package/script/src/interpreter/vanilla/VanillaInterpreter.d.ts.map +1 -1
- package/script/src/interpreter/vanilla/VanillaInterpreter.js +6 -30
- package/script/src/interpreter/vanilla/compilers/durableworkflow.d.ts.map +1 -1
- package/script/src/interpreter/vanilla/compilers/durableworkflow.js +12 -2
- package/script/src/interpreter/vanilla/compilers/schedule.js +1 -1
- package/script/src/issues/Issues.d.ts.map +1 -1
- package/script/src/issues/Issues.js +1 -6
- package/script/src/kv/KeyValue.d.ts +7 -3
- package/script/src/kv/KeyValue.d.ts.map +1 -1
- package/script/src/kv/fingerprintExternalUserId.d.ts +6 -0
- package/script/src/kv/fingerprintExternalUserId.d.ts.map +1 -0
- package/script/src/kv/fingerprintExternalUserId.js +23 -0
- package/script/src/kv/memory/MemoryKeyValueProvider.d.ts +4 -0
- package/script/src/kv/memory/MemoryKeyValueProvider.d.ts.map +1 -1
- package/script/src/kv/memory/MemoryKeyValueProvider.js +50 -0
- package/script/src/kv/nats/NatsKeyValueProvider.d.ts.map +1 -1
- package/script/src/kv/nats/NatsKeyValueProvider.js +14 -0
- package/script/src/kv/sdk/SDKKeyValueProvider.d.ts.map +1 -1
- package/script/src/kv/sdk/SDKKeyValueProvider.js +12 -0
- package/script/src/observability/logging/ConsoleLogger.d.ts.map +1 -1
- package/script/src/observability/mod.d.ts +1 -0
- package/script/src/observability/mod.d.ts.map +1 -1
- package/script/src/observability/mod.js +1 -0
- package/script/src/observability/tracePropagation.d.ts +23 -0
- package/script/src/observability/tracePropagation.d.ts.map +1 -0
- package/script/src/observability/tracePropagation.js +46 -0
- package/esm/deps/jsr.io/@std/fmt/1.0.9/colors.d.ts.map +0 -1
- package/esm/src/internal/supervisor.d.ts +0 -23
- package/esm/src/internal/supervisor.d.ts.map +0 -1
- package/esm/src/internal/supervisor.js +0 -267
- package/script/deps/jsr.io/@std/fmt/1.0.9/colors.d.ts.map +0 -1
- package/script/src/internal/supervisor.d.ts +0 -23
- package/script/src/internal/supervisor.d.ts.map +0 -1
- package/script/src/internal/supervisor.js +0 -275
- /package/esm/deps/jsr.io/@std/fmt/{1.0.9 → 1.0.10}/colors.d.ts +0 -0
- /package/script/deps/jsr.io/@std/fmt/{1.0.9 → 1.0.10}/colors.d.ts +0 -0
|
@@ -25,9 +25,7 @@ function compileCatch(compilerCtx, task) {
|
|
|
25
25
|
return compilerCtx.tracer.startActiveSpan(`catch`, (span) => {
|
|
26
26
|
span.setAttribute('execution.id', ctx.executionId);
|
|
27
27
|
span.setAttribute('task.type', 'catch');
|
|
28
|
-
span.setAttribute('type', 'task');
|
|
29
28
|
if (error instanceof Error) {
|
|
30
|
-
span.setAttribute('status', 'fail');
|
|
31
29
|
span.recordException(error);
|
|
32
30
|
span.setAttribute('error.message', error.message);
|
|
33
31
|
span.setAttribute('error.stack', error.stack ?? '');
|
|
@@ -65,7 +63,7 @@ function compileCatch(compilerCtx, task) {
|
|
|
65
63
|
reason: 'error',
|
|
66
64
|
severity: 'low',
|
|
67
65
|
});
|
|
68
|
-
span.setAttribute('
|
|
66
|
+
span.setAttribute('error', `${error}`);
|
|
69
67
|
span.end();
|
|
70
68
|
return errorOperator((0, rxjs_1.of)(ctx.withData(new ExecutionError_js_1.ExecutionError(ctx, `${error}`, { cause: error }), { recoveredFromCatch: true })));
|
|
71
69
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"durableworkflow.d.ts","sourceRoot":"","sources":["../../../../../src/src/interpreter/durable/compilers/durableworkflow.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAElC,OAAO,EAAW,WAAW,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EACH,mBAAmB,EACnB,sBAAsB,EACzB,MAAM,yCAAyC,CAAC;AAEjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"durableworkflow.d.ts","sourceRoot":"","sources":["../../../../../src/src/interpreter/durable/compilers/durableworkflow.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAElC,OAAO,EAAW,WAAW,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EACH,mBAAmB,EACnB,sBAAsB,EACzB,MAAM,yCAAyC,CAAC;AAEjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3C,wBAAgB,sBAAsB,CAClC,GAAG,EAAE,sBAAsB,EAC3B,OAAO,EAAE,sBAAsB,EAC/B,MAAM,EAAE,WAAW,GACpB,UAAU,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,CAuJ9C;AAED,eAAO,MAAM,uBAAuB,EAAE,eAAe,CAAC,mBAAmB,EAAE,sBAAsB,CAI5F,CAAC"}
|
|
@@ -18,6 +18,7 @@ const mod_js_1 = require("../../../../deps/jsr.io/@std/ulid/1.0.0/mod.js");
|
|
|
18
18
|
const rxjs_1 = require("rxjs");
|
|
19
19
|
const DurableTrigger_js_1 = require("../../../dsl/triggers/DurableTrigger.js");
|
|
20
20
|
const constants_js_1 = require("../../../internal/constants.js");
|
|
21
|
+
const tracePropagation_js_1 = require("../../../observability/tracePropagation.js");
|
|
21
22
|
function compileDurableWorkflow(ctx, trigger, signal) {
|
|
22
23
|
return new rxjs_1.Observable((subscriber) => {
|
|
23
24
|
function cleanup() {
|
|
@@ -44,38 +45,52 @@ function compileDurableWorkflow(ctx, trigger, signal) {
|
|
|
44
45
|
continue;
|
|
45
46
|
}
|
|
46
47
|
for (const wf of wfs.workflows) {
|
|
47
|
-
|
|
48
|
+
// If the metadata carries a traceparent, extractTraceContext returns a
|
|
49
|
+
// context with the remote span as parent; otherwise it returns the
|
|
50
|
+
// current active context, which causes startActiveSpan to create a new
|
|
51
|
+
// root span (new trace). Either way the SDK does the right thing.
|
|
52
|
+
const parentCtx = (0, tracePropagation_js_1.extractTraceContext)(wf.metadata);
|
|
53
|
+
await ctx.tracer.startActiveSpan(`durableworkflow-${trigger.id}`, {}, parentCtx, async (span) => {
|
|
48
54
|
span.setAttribute('task.id', trigger.id);
|
|
49
55
|
span.setAttribute('task.type', 'durableworkflow');
|
|
50
56
|
span.setAttribute('execution.id', wf.metadata?.executionId ?? '');
|
|
51
57
|
if (wf.metadata?.activationId) {
|
|
52
58
|
span.setAttribute('activation.id', wf.metadata.activationId);
|
|
53
59
|
}
|
|
60
|
+
if (wf.metadata?.traceparent) {
|
|
61
|
+
span.setAttribute('trace.continuation', true);
|
|
62
|
+
}
|
|
54
63
|
try {
|
|
55
64
|
const payload = wf.payload ? atob(wf.payload) : '{}';
|
|
56
65
|
const data = JSON.parse(payload);
|
|
57
66
|
let activation;
|
|
58
67
|
if (wf.metadata?.activationId) {
|
|
59
68
|
try {
|
|
60
|
-
const { data } = await ctx.platformApi
|
|
69
|
+
const { data } = await ctx.platformApi
|
|
70
|
+
.getActivation({
|
|
61
71
|
path: {
|
|
62
72
|
activation_id: wf.metadata.activationId,
|
|
63
73
|
organisation_id: ctx.organisationId,
|
|
64
|
-
environment_id: Deno.env.get(constants_js_1.envVarEnvId) ||
|
|
74
|
+
environment_id: Deno.env.get(constants_js_1.envVarEnvId) ||
|
|
75
|
+
'development',
|
|
65
76
|
},
|
|
66
77
|
throwOnError: true,
|
|
67
78
|
});
|
|
68
79
|
activation = data;
|
|
69
80
|
}
|
|
70
81
|
catch (error) {
|
|
71
|
-
ctx.log.error('Failed to get activation', {
|
|
82
|
+
ctx.log.error('Failed to get activation', {
|
|
83
|
+
error,
|
|
84
|
+
});
|
|
72
85
|
throw new Error('Failed to get activation');
|
|
73
86
|
}
|
|
74
87
|
}
|
|
75
|
-
const newContext = ctx.contextProvider
|
|
88
|
+
const newContext = ctx.contextProvider
|
|
89
|
+
.createWithExecutionId(activation, data, wf.metadata?.executionId ?? (0, mod_js_1.ulid)().toString(), {
|
|
76
90
|
workflow: wf,
|
|
77
91
|
onSuccess: (completedContext) => {
|
|
78
|
-
const opts = completedContext
|
|
92
|
+
const opts = completedContext
|
|
93
|
+
.options;
|
|
79
94
|
if (opts.recoveredFromCatch) {
|
|
80
95
|
return;
|
|
81
96
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fn.d.ts","sourceRoot":"","sources":["../../../../../src/src/interpreter/durable/compilers/fn.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fn.d.ts","sourceRoot":"","sources":["../../../../../src/src/interpreter/durable/compilers/fn.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAEtD,OAAO,EAA2B,YAAY,EAAE,MAAM,YAAY,CAAC;AAiCnE,eAAO,MAAM,UAAU,EAAE,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAG/D,CAAC"}
|
|
@@ -15,41 +15,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
15
15
|
exports.fnCompiler = void 0;
|
|
16
16
|
const rxjs_1 = require("rxjs");
|
|
17
17
|
const FnTask_js_1 = require("../../../dsl/tasks/FnTask.js");
|
|
18
|
-
const supervisor_js_1 = require("../../../internal/supervisor.js");
|
|
19
18
|
function compileFn(compilerCtx, task) {
|
|
20
|
-
return (src) => src.pipe((0, rxjs_1.
|
|
19
|
+
return (src) => src.pipe((0, rxjs_1.tap)({
|
|
20
|
+
complete: () => compilerCtx.log.debug('fn.complete'),
|
|
21
|
+
}), (0, rxjs_1.mergeMap)(async (ctx) => {
|
|
21
22
|
return await compilerCtx.tracer.startActiveSpan(`fn-${task.id}`, async (span) => {
|
|
22
|
-
await (0, supervisor_js_1.sendTaskStartEvent)(task.id, ctx, span);
|
|
23
23
|
span.setAttribute('task.id', task.id);
|
|
24
|
-
span.setAttribute('type', 'task');
|
|
25
|
-
span.setAttribute('task.type', 'fn');
|
|
26
24
|
span.setAttribute('execution.id', ctx.executionId);
|
|
27
|
-
span.setAttribute('workflow.id', ctx.options.workflowId || 'unknown-workflow');
|
|
28
25
|
try {
|
|
29
|
-
const spanContext = span.spanContext();
|
|
30
|
-
const ctxWithLogger = ctx.withLogger(ctx.log.child({ spanId: spanContext.spanId, traceId: spanContext.traceId }));
|
|
31
|
-
let result;
|
|
32
26
|
if (typeof ctx.idx === 'number') {
|
|
33
|
-
|
|
27
|
+
return ctx.withData(await task._fn(ctx, ctx.idx));
|
|
34
28
|
}
|
|
35
|
-
|
|
36
|
-
result = ctx.withData(await task._fn(ctxWithLogger));
|
|
37
|
-
}
|
|
38
|
-
if (supervisor_js_1.enabled) {
|
|
39
|
-
span.setAttribute('response.body', JSON.stringify(result.data));
|
|
40
|
-
}
|
|
41
|
-
span.setAttribute('status', 'pass');
|
|
42
|
-
return result;
|
|
43
|
-
}
|
|
44
|
-
catch (error) {
|
|
45
|
-
if (error instanceof Error) {
|
|
46
|
-
span.setAttribute('status', 'fail');
|
|
47
|
-
span.recordException(error);
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
span.recordException(new Error(String(error)));
|
|
51
|
-
}
|
|
52
|
-
throw error;
|
|
29
|
+
return ctx.withData(await task._fn(ctx));
|
|
53
30
|
}
|
|
54
31
|
finally {
|
|
55
32
|
span.end();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../../../src/src/interpreter/durable/compilers/http.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../../../src/src/interpreter/durable/compilers/http.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAmB,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAE/E,OAAO,EAA2B,YAAY,EAAE,MAAM,YAAY,CAAC;AAwFnE,eAAO,MAAM,YAAY,EAAE,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAG5E,CAAC"}
|
|
@@ -14,32 +14,19 @@
|
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.httpCompiler = void 0;
|
|
16
16
|
const rxjs_1 = require("rxjs");
|
|
17
|
+
const operators_1 = require("rxjs/operators");
|
|
18
|
+
const HttpTask_js_1 = require("../../../dsl/tasks/HttpTask.js");
|
|
17
19
|
const DynamicFetchFactory_js_1 = require("../../../connection/DynamicFetchFactory.js");
|
|
18
|
-
const FetchBuilder_js_1 = require("../../../connection/internal/FetchBuilder.js");
|
|
19
20
|
const StaticFetchFactory_js_1 = require("../../../connection/StaticFetchFactory.js");
|
|
20
|
-
const HttpTask_js_1 = require("../../../dsl/tasks/HttpTask.js");
|
|
21
|
-
const supervisor_js_1 = require("../../../internal/supervisor.js");
|
|
22
21
|
function compileHttp(compilerCtx, task) {
|
|
23
22
|
const cnxMap = compilerCtx.configReader.getCnxMapping(task.opts.connection);
|
|
24
23
|
let fetchFactory;
|
|
25
24
|
if (!cnxMap) {
|
|
26
|
-
compilerCtx.log.
|
|
27
|
-
|
|
28
|
-
// missing connection map and we are in supervised mode, so we use the fake fetcher
|
|
29
|
-
fetchFactory = Promise.resolve(new StaticFetchFactory_js_1.StaticFetchFactory(new FetchBuilder_js_1.FetchBuilder(globalThis.fetch, { name: task.opts.connection }).buildSupervisedFetch()));
|
|
30
|
-
}
|
|
31
|
-
else {
|
|
32
|
-
// missing connection map and not in supervised mode, so we use global fetch
|
|
33
|
-
fetchFactory = Promise.resolve(new StaticFetchFactory_js_1.StaticFetchFactory(globalThis.fetch));
|
|
34
|
-
}
|
|
25
|
+
compilerCtx.log.error(`Connection ${task.opts.connection} not found, using default fetch with no credentials`);
|
|
26
|
+
fetchFactory = Promise.resolve(new StaticFetchFactory_js_1.StaticFetchFactory(globalThis.fetch));
|
|
35
27
|
}
|
|
36
28
|
else if (cnxMap.dynamic) {
|
|
37
|
-
|
|
38
|
-
fetchFactory = Promise.resolve(new StaticFetchFactory_js_1.StaticFetchFactory(new FetchBuilder_js_1.FetchBuilder(globalThis.fetch, { name: task.opts.connection }).buildSupervisedFetch()));
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
fetchFactory = Promise.resolve(new DynamicFetchFactory_js_1.DynamicFetchFactory(compilerCtx.cnxFactory, compilerCtx.platformApi, compilerCtx.organisationId, cnxMap.templateId));
|
|
42
|
-
}
|
|
29
|
+
fetchFactory = Promise.resolve(new DynamicFetchFactory_js_1.DynamicFetchFactory(compilerCtx.cnxFactory, compilerCtx.platformApi, compilerCtx.organisationId, cnxMap.templateId));
|
|
43
30
|
}
|
|
44
31
|
else {
|
|
45
32
|
fetchFactory = compilerCtx.platformApi.getConnection({
|
|
@@ -49,21 +36,8 @@ function compileHttp(compilerCtx, task) {
|
|
|
49
36
|
},
|
|
50
37
|
throwOnError: true,
|
|
51
38
|
})
|
|
52
|
-
.then(({ data }) =>
|
|
53
|
-
|
|
54
|
-
// use the fake fetcher that calls the supervisor to generate a mock reponse
|
|
55
|
-
return new StaticFetchFactory_js_1.StaticFetchFactory(new FetchBuilder_js_1.FetchBuilder(globalThis.fetch, data).buildSupervisedFetch());
|
|
56
|
-
}
|
|
57
|
-
return Promise.all([compilerCtx.cnxFactory.fetcher(data), data.baseUrl ?? ''])
|
|
58
|
-
.then(([fetcher, baseUrl]) => new StaticFetchFactory_js_1.StaticFetchFactory(fetcher, baseUrl));
|
|
59
|
-
})
|
|
60
|
-
.catch((err) => {
|
|
61
|
-
compilerCtx.log.error(`Failed to get connection ${task.opts.connection}`, err);
|
|
62
|
-
if (supervisor_js_1.enabled) {
|
|
63
|
-
return new StaticFetchFactory_js_1.StaticFetchFactory(new FetchBuilder_js_1.FetchBuilder(globalThis.fetch, { name: task.opts.connection }).build());
|
|
64
|
-
}
|
|
65
|
-
throw err;
|
|
66
|
-
});
|
|
39
|
+
.then(({ data }) => Promise.all([compilerCtx.cnxFactory.fetcher(data), data.baseUrl ?? '']))
|
|
40
|
+
.then(([fetcher, baseUrl]) => new StaticFetchFactory_js_1.StaticFetchFactory(fetcher, baseUrl));
|
|
67
41
|
}
|
|
68
42
|
async function http(ctx) {
|
|
69
43
|
const [fetch, baseUrl] = await fetchFactory.then((ff) => Promise.all([ff.fetcher(ctx), ff.baseUrl(ctx)]));
|
|
@@ -71,27 +45,19 @@ function compileHttp(compilerCtx, task) {
|
|
|
71
45
|
const result = await task.fn(httpContext);
|
|
72
46
|
return ctx.withData(result);
|
|
73
47
|
}
|
|
74
|
-
return (src) => src.pipe((0,
|
|
48
|
+
return (src) => src.pipe((0, operators_1.tap)({
|
|
49
|
+
complete: () => compilerCtx.log.debug('http.complete'),
|
|
50
|
+
}), (0, rxjs_1.mergeMap)((ctx) => {
|
|
75
51
|
return compilerCtx.tracer.startActiveSpan(`http-${task.id}`, async (span) => {
|
|
76
|
-
await (0, supervisor_js_1.sendTaskStartEvent)(task.id, ctx, span);
|
|
77
52
|
span.setAttribute('task.id', task.id);
|
|
78
53
|
span.setAttribute('task.type', 'http');
|
|
79
|
-
span.setAttribute('type', 'task');
|
|
80
54
|
span.setAttribute('execution.id', ctx.executionId);
|
|
81
55
|
span.setAttribute('connection.name', task.opts.connection);
|
|
82
|
-
span.setAttribute('workflow.id', ctx.options.workflowId || 'unknown-workflow');
|
|
83
|
-
const spanContext = span.spanContext();
|
|
84
56
|
try {
|
|
85
|
-
|
|
86
|
-
if (supervisor_js_1.enabled) {
|
|
87
|
-
span.setAttribute('response.body', JSON.stringify(result.data));
|
|
88
|
-
}
|
|
89
|
-
span.setAttribute('status', 'pass');
|
|
90
|
-
return result;
|
|
57
|
+
return await http(ctx);
|
|
91
58
|
}
|
|
92
59
|
catch (error) {
|
|
93
60
|
if (error instanceof Error) {
|
|
94
|
-
span.setAttribute('status', 'fail');
|
|
95
61
|
span.recordException(error);
|
|
96
62
|
}
|
|
97
63
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schedule.d.ts","sourceRoot":"","sources":["../../../../../src/src/interpreter/durable/compilers/schedule.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"schedule.d.ts","sourceRoot":"","sources":["../../../../../src/src/interpreter/durable/compilers/schedule.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAEzF,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAkJ7C,eAAO,MAAM,gBAAgB,EAAE,eAAe,CAAC,YAAY,EAAE,eAAe,CAG3E,CAAC"}
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.scheduleCompiler = void 0;
|
|
16
16
|
const rxjs_1 = require("rxjs");
|
|
17
|
+
const constants_js_1 = require("../../../dsl/http/versori/constants.js");
|
|
17
18
|
const ScheduleTrigger_js_1 = require("../../../dsl/triggers/ScheduleTrigger.js");
|
|
18
|
-
const constants_js_1 = require("../../../internal/constants.js");
|
|
19
19
|
function compileSchedule(ctx, trigger, signal) {
|
|
20
20
|
return new rxjs_1.Observable((subscriber) => {
|
|
21
21
|
// Add HTTP endpoint for manual triggering
|
|
@@ -55,7 +55,7 @@ function compileSchedule(ctx, trigger, signal) {
|
|
|
55
55
|
});
|
|
56
56
|
return;
|
|
57
57
|
}
|
|
58
|
-
const executionCtx = ctx.contextProvider.create(activation[0], {}
|
|
58
|
+
const executionCtx = ctx.contextProvider.create(activation[0], {});
|
|
59
59
|
span.setAttribute('execution.id', executionCtx.executionId);
|
|
60
60
|
try {
|
|
61
61
|
subscriber.next(executionCtx);
|
|
@@ -87,7 +87,7 @@ function compileSchedule(ctx, trigger, signal) {
|
|
|
87
87
|
return;
|
|
88
88
|
}
|
|
89
89
|
activations.forEach((activation) => {
|
|
90
|
-
const executionCtx = ctx.contextProvider.create(activation, {}
|
|
90
|
+
const executionCtx = ctx.contextProvider.create(activation, {});
|
|
91
91
|
try {
|
|
92
92
|
subscriber.next(executionCtx);
|
|
93
93
|
}
|
|
@@ -106,7 +106,6 @@ function compileSchedule(ctx, trigger, signal) {
|
|
|
106
106
|
await ctx.tracer.startActiveSpan(`schedule-${trigger.id}`, async (span) => {
|
|
107
107
|
span.setAttribute('task.id', trigger.id);
|
|
108
108
|
span.setAttribute('task.type', 'schedule');
|
|
109
|
-
span.setAttribute('type', 'task');
|
|
110
109
|
span.setAttribute('schedule', trigger.schedule);
|
|
111
110
|
span.setAttribute('project.id', projectId);
|
|
112
111
|
span.setAttribute('environment.id', environmentId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhook.d.ts","sourceRoot":"","sources":["../../../../../src/src/interpreter/durable/compilers/webhook.ts"],"names":[],"mappings":"AA2BA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAGtF,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAuD7C,eAAO,MAAM,eAAe,EAAE,eAAe,CAAC,WAAW,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"webhook.d.ts","sourceRoot":"","sources":["../../../../../src/src/interpreter/durable/compilers/webhook.ts"],"names":[],"mappings":"AA2BA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAGtF,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAuD7C,eAAO,MAAM,eAAe,EAAE,eAAe,CAAC,WAAW,EAAE,cAAc,CAySxE,CAAC"}
|
|
@@ -90,7 +90,6 @@ exports.webhookCompiler = {
|
|
|
90
90
|
onError = trigger.options.response.onError;
|
|
91
91
|
}
|
|
92
92
|
const ctxOptionsFn = (req, res) => ({
|
|
93
|
-
workflowId: trigger.id,
|
|
94
93
|
onSuccess: (ctx) => {
|
|
95
94
|
if (isSync) {
|
|
96
95
|
sendResponse(res, onSuccess(ctx));
|
|
@@ -111,7 +110,6 @@ exports.webhookCompiler = {
|
|
|
111
110
|
else {
|
|
112
111
|
routeMiddleware.push(express_1.default.raw({ type: '*/*', limit: '50mb' }));
|
|
113
112
|
}
|
|
114
|
-
ctx.webhookRegistry.set(trigger.id, { method, path: `/${trigger.id}`, options: trigger.options });
|
|
115
113
|
return new rxjs_1.Observable((subscriber) => {
|
|
116
114
|
if (!ctx.webhookRouter) {
|
|
117
115
|
throw new Error('Router not available in compiler context');
|
|
@@ -44,11 +44,6 @@ type Registration = {
|
|
|
44
44
|
sigintListener: () => void;
|
|
45
45
|
subscription?: Subscription;
|
|
46
46
|
};
|
|
47
|
-
type WebhookRegistry = Map<string, {
|
|
48
|
-
method: string;
|
|
49
|
-
path: string;
|
|
50
|
-
options: any;
|
|
51
|
-
}>;
|
|
52
47
|
/**
|
|
53
48
|
* MemoryInterpreter is the default interpreter for executing Versori workflows. It handles registration and execution
|
|
54
49
|
* of workflows triggered by schedules and webhooks.
|
|
@@ -77,7 +72,6 @@ export declare class MemoryInterpreter {
|
|
|
77
72
|
private readonly webhookRouter;
|
|
78
73
|
private readonly cronRouter;
|
|
79
74
|
private cronRegistry;
|
|
80
|
-
private webhookRegistry;
|
|
81
75
|
private readonly cnxFactory;
|
|
82
76
|
private readonly cronProvider;
|
|
83
77
|
private readonly tracer;
|
|
@@ -89,8 +83,7 @@ export declare class MemoryInterpreter {
|
|
|
89
83
|
private cronServer?;
|
|
90
84
|
private shutdownServer?;
|
|
91
85
|
private isShuttingDown;
|
|
92
|
-
|
|
93
|
-
constructor(log: Logger, compiler: ObservableCompiler, contextProvider: ContextProvider, webhookRouter: Router, cronRouter: Router, cronRegistry: Map<string, string>, webhookRegistry: WebhookRegistry, cnxFactory: DirectConnectionFactory, cronProvider: CronProvider, tracer: Tracer, issuesProvider: IssueAPI, cfgReader: ConfigReader, otelSDK?: NodeSDK | undefined);
|
|
86
|
+
constructor(log: Logger, compiler: ObservableCompiler, contextProvider: ContextProvider, webhookRouter: Router, cronRouter: Router, cronRegistry: Map<string, string>, cnxFactory: DirectConnectionFactory, cronProvider: CronProvider, tracer: Tracer, issuesProvider: IssueAPI, cfgReader: ConfigReader, otelSDK?: NodeSDK | undefined);
|
|
94
87
|
static newInstance(options?: MemoryInterpreterOptions): Promise<MemoryInterpreter>;
|
|
95
88
|
register<O>(workflow: Workflow<O>, options?: MemoryInterpreterOptions): Registration;
|
|
96
89
|
start(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryInterpreter.d.ts","sourceRoot":"","sources":["../../../../src/src/interpreter/memory/MemoryInterpreter.ts"],"names":[],"mappings":"AAaA,OAAsB,
|
|
1
|
+
{"version":3,"file":"MemoryInterpreter.d.ts","sourceRoot":"","sources":["../../../../src/src/interpreter/memory/MemoryInterpreter.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,15 +29,14 @@ const configloader_js_1 = require("../../dsl/http/versori/configloader.js");
|
|
|
29
29
|
const cronapi_js_1 = require("../../dsl/http/versori/cronapi.js");
|
|
30
30
|
const Workflow_js_1 = require("../../dsl/Workflow.js");
|
|
31
31
|
const constants_js_1 = require("../../internal/constants.js");
|
|
32
|
-
const supervisor_js_1 = require("../../internal/supervisor.js");
|
|
33
32
|
const Issues_js_1 = require("../../issues/Issues.js");
|
|
34
33
|
const MemoryKeyValueProvider_js_1 = require("../../kv/memory/MemoryKeyValueProvider.js");
|
|
35
34
|
const NatsKeyValueProvider_js_1 = require("../../kv/nats/NatsKeyValueProvider.js");
|
|
36
35
|
const ConsoleLogger_js_1 = require("../../observability/logging/ConsoleLogger.js");
|
|
37
36
|
const PlatformApi_js_1 = require("../../services/platform/PlatformApi.js");
|
|
38
37
|
const ObservableCompiler_js_1 = require("./ObservableCompiler.js");
|
|
39
|
-
function getKVProvider() {
|
|
40
|
-
if (
|
|
38
|
+
function getKVProvider(runLocal) {
|
|
39
|
+
if (runLocal) {
|
|
41
40
|
return Promise.resolve(new MemoryKeyValueProvider_js_1.MemoryKeyValueProvider());
|
|
42
41
|
}
|
|
43
42
|
return NatsKeyValueProvider_js_1.NatsKeyValueProvider.fromEnv();
|
|
@@ -64,7 +63,7 @@ function getKVProvider() {
|
|
|
64
63
|
* ```
|
|
65
64
|
*/
|
|
66
65
|
class MemoryInterpreter {
|
|
67
|
-
constructor(log, compiler, contextProvider, webhookRouter, cronRouter, cronRegistry,
|
|
66
|
+
constructor(log, compiler, contextProvider, webhookRouter, cronRouter, cronRegistry, cnxFactory, cronProvider, tracer, issuesProvider, cfgReader, otelSDK) {
|
|
68
67
|
Object.defineProperty(this, "log", {
|
|
69
68
|
enumerable: true,
|
|
70
69
|
configurable: true,
|
|
@@ -101,12 +100,6 @@ class MemoryInterpreter {
|
|
|
101
100
|
writable: true,
|
|
102
101
|
value: cronRegistry
|
|
103
102
|
});
|
|
104
|
-
Object.defineProperty(this, "webhookRegistry", {
|
|
105
|
-
enumerable: true,
|
|
106
|
-
configurable: true,
|
|
107
|
-
writable: true,
|
|
108
|
-
value: webhookRegistry
|
|
109
|
-
});
|
|
110
103
|
Object.defineProperty(this, "cnxFactory", {
|
|
111
104
|
enumerable: true,
|
|
112
105
|
configurable: true,
|
|
@@ -173,13 +166,6 @@ class MemoryInterpreter {
|
|
|
173
166
|
writable: true,
|
|
174
167
|
value: false
|
|
175
168
|
});
|
|
176
|
-
// Workflow registration promises only used when supervisor is enabled
|
|
177
|
-
Object.defineProperty(this, "wfRegistration", {
|
|
178
|
-
enumerable: true,
|
|
179
|
-
configurable: true,
|
|
180
|
-
writable: true,
|
|
181
|
-
value: []
|
|
182
|
-
});
|
|
183
169
|
if (typeof this.log === 'undefined') {
|
|
184
170
|
// this captures the old way of instantiating the MemoryInterpreter and provides an
|
|
185
171
|
// error message back to the user to let them know they should use the new way.
|
|
@@ -198,6 +184,7 @@ class MemoryInterpreter {
|
|
|
198
184
|
const otelTracesURL = Deno.env.get(constants_js_1.envVarOtelTracesURL);
|
|
199
185
|
let otelSDK;
|
|
200
186
|
const configReader = configloader_js_1.VersoriConfigReader.fromEnv(log);
|
|
187
|
+
const runLocal = Deno.env.get(constants_js_1.envVarLocalRun) === 'true';
|
|
201
188
|
await waitForReady(log);
|
|
202
189
|
// Do NOT change those attributes, they are used by the API to filter on
|
|
203
190
|
const resource = (0, resources_1.resourceFromAttributes)({
|
|
@@ -219,29 +206,20 @@ class MemoryInterpreter {
|
|
|
219
206
|
log.info('Starting OpenTelemetry SDK');
|
|
220
207
|
otelSDK.start();
|
|
221
208
|
}
|
|
222
|
-
else if (supervisor_js_1.enabled) {
|
|
223
|
-
otelSDK = new sdk_node_1.NodeSDK({
|
|
224
|
-
traceExporter: new supervisor_js_1.Fake(),
|
|
225
|
-
serviceName: serviceName,
|
|
226
|
-
resource: resource,
|
|
227
|
-
});
|
|
228
|
-
log.info('Starting Testing OpenTelemetry SDK');
|
|
229
|
-
otelSDK.start();
|
|
230
|
-
}
|
|
231
209
|
const tracer = api_1.default.trace.getTracer(serviceName, version);
|
|
232
210
|
const connectionFactory = DirectConnectionFactory_js_1.DirectConnectionFactory.fromEnv(log);
|
|
233
211
|
const issuesProvider = new Issues_js_1.IssueImpl(log);
|
|
234
212
|
if (options.contextProvider) {
|
|
235
213
|
// no need to set up a key-value provider if options.contextProvider is already
|
|
236
214
|
// initialised.
|
|
237
|
-
return new MemoryInterpreter(log, compiler, options.contextProvider, express_1.default.Router(), express_1.default.Router(), new Map(),
|
|
215
|
+
return new MemoryInterpreter(log, compiler, options.contextProvider, express_1.default.Router(), express_1.default.Router(), new Map(), DirectConnectionFactory_js_1.DirectConnectionFactory.fromEnv(log), cronapi_js_1.CronAPIClient.fromEnv(), tracer, issuesProvider, configReader, otelSDK);
|
|
238
216
|
}
|
|
239
|
-
const kvp = await getKVProvider();
|
|
217
|
+
const kvp = await getKVProvider(runLocal);
|
|
240
218
|
const platformApi = PlatformApi_js_1.PlatformApiImpl.fromEnv();
|
|
241
219
|
const organisationId = Deno.env.get(constants_js_1.envVarOrgId) || 'development';
|
|
242
220
|
const environmentId = Deno.env.get(constants_js_1.envVarEnvId) || 'development';
|
|
243
221
|
const ctxProvider = new ContextProvider_js_1.ContextProviderImpl(log, kvp, new CredentialsProvider_js_1.CredentialsProviderImpl(connectionFactory.credentials, connectionFactory.tokens, connectionFactory.oauth1, configReader, platformApi), platformApi, organisationId, environmentId, issuesProvider);
|
|
244
|
-
return new MemoryInterpreter(log, compiler, ctxProvider, express_1.default.Router(), express_1.default.Router(), new Map(),
|
|
222
|
+
return new MemoryInterpreter(log, compiler, ctxProvider, express_1.default.Router(), express_1.default.Router(), new Map(), connectionFactory, cronapi_js_1.CronAPIClient.fromEnv(), tracer, issuesProvider, configReader, otelSDK);
|
|
245
223
|
}
|
|
246
224
|
register(workflow, options) {
|
|
247
225
|
const localAbortController = new AbortController();
|
|
@@ -263,7 +241,6 @@ class MemoryInterpreter {
|
|
|
263
241
|
cnxFactory: this.cnxFactory,
|
|
264
242
|
platformApi: PlatformApi_js_1.PlatformApiImpl.fromEnv(),
|
|
265
243
|
webhookRouter: this.webhookRouter,
|
|
266
|
-
webhookRegistry: this.webhookRegistry,
|
|
267
244
|
cronRouter: this.cronRouter,
|
|
268
245
|
cronRegistry: this.cronRegistry,
|
|
269
246
|
configReader: this.cfgReader,
|
|
@@ -283,14 +260,11 @@ class MemoryInterpreter {
|
|
|
283
260
|
},
|
|
284
261
|
};
|
|
285
262
|
this.registeredWorkflows.push(registration);
|
|
286
|
-
if (supervisor_js_1.enabled) {
|
|
287
|
-
this.wfRegistration.push((0, supervisor_js_1.registerWorkflow)(workflow));
|
|
288
|
-
}
|
|
289
263
|
return registration;
|
|
290
264
|
}
|
|
291
|
-
|
|
292
|
-
const port = Deno.env.get(
|
|
293
|
-
const cronPort = Deno.env.get(
|
|
265
|
+
start() {
|
|
266
|
+
const port = Deno.env.get('PORT') || 3000;
|
|
267
|
+
const cronPort = Deno.env.get('CRON_PORT') || 3001;
|
|
294
268
|
const webhookApp = (0, express_1.default)();
|
|
295
269
|
const cronApp = (0, express_1.default)();
|
|
296
270
|
cronApp.use(express_1.default.json());
|
|
@@ -317,13 +291,6 @@ class MemoryInterpreter {
|
|
|
317
291
|
triggerName: registration.triggerName,
|
|
318
292
|
error: err instanceof Error ? err.toString() : err,
|
|
319
293
|
});
|
|
320
|
-
this.tracer.startActiveSpan('done', (span) => {
|
|
321
|
-
span.setAttribute('error.message', err instanceof Error ? err.toString() : err);
|
|
322
|
-
span.setAttribute('execution.id', ctx.executionId);
|
|
323
|
-
span.setAttribute('result', 'fail');
|
|
324
|
-
span.setAttribute('workflow.id', ctx.workflowId || 'unknown-workflow');
|
|
325
|
-
span.end();
|
|
326
|
-
});
|
|
327
294
|
try {
|
|
328
295
|
ctx.options.onError?.(ctx.withData(err));
|
|
329
296
|
}
|
|
@@ -346,12 +313,6 @@ class MemoryInterpreter {
|
|
|
346
313
|
triggerName: registration.triggerName,
|
|
347
314
|
durationMs,
|
|
348
315
|
});
|
|
349
|
-
this.tracer.startActiveSpan('done', (span) => {
|
|
350
|
-
span.setAttribute('execution.id', ctx.executionId);
|
|
351
|
-
span.setAttribute('result', 'pass');
|
|
352
|
-
span.setAttribute('workflow.id', ctx.workflowId || 'unknown-workflow');
|
|
353
|
-
span.end();
|
|
354
|
-
});
|
|
355
316
|
try {
|
|
356
317
|
ctx.options.onSuccess?.(ctx);
|
|
357
318
|
}
|
|
@@ -413,7 +374,6 @@ class MemoryInterpreter {
|
|
|
413
374
|
if (this.cronServer) {
|
|
414
375
|
this.cronServer.close();
|
|
415
376
|
}
|
|
416
|
-
this.otelSDK?.shutdown();
|
|
417
377
|
// Remove all signal listeners
|
|
418
378
|
for (const registration of this.registeredWorkflows) {
|
|
419
379
|
Deno.removeSignalListener('SIGINT', registration.sigintListener);
|
|
@@ -430,10 +390,6 @@ class MemoryInterpreter {
|
|
|
430
390
|
}
|
|
431
391
|
};
|
|
432
392
|
Deno.addSignalListener('SIGINT', this.shutdownServer);
|
|
433
|
-
if (supervisor_js_1.enabled) {
|
|
434
|
-
await Promise.all(this.wfRegistration);
|
|
435
|
-
await (0, supervisor_js_1.signalReady)();
|
|
436
|
-
}
|
|
437
393
|
return new Promise((resolve) => {
|
|
438
394
|
let serversClosed = 0;
|
|
439
395
|
const totalServers = [this.webhookServer, this.cronServer].filter(Boolean).length;
|
|
@@ -471,7 +427,7 @@ class MemoryInterpreter {
|
|
|
471
427
|
}
|
|
472
428
|
exports.MemoryInterpreter = MemoryInterpreter;
|
|
473
429
|
async function waitForReady(log) {
|
|
474
|
-
const readyCheckUrl = Deno.env.get(
|
|
430
|
+
const readyCheckUrl = Deno.env.get('READY_CHECK_URL');
|
|
475
431
|
if (!readyCheckUrl) {
|
|
476
432
|
return Promise.resolve();
|
|
477
433
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { Tracer } from '@opentelemetry/api';
|
|
2
2
|
import { Router } from 'express';
|
|
3
3
|
import { Observable, OperatorFunction } from 'rxjs';
|
|
4
|
-
import { ConnectionFactory } from '../../connection/types.js';
|
|
5
4
|
import { ContextImpl } from '../../context/Context.js';
|
|
6
5
|
import { ContextProvider } from '../../context/ContextProvider.js';
|
|
7
6
|
import { ConfigReader } from '../../dsl/http/types.js';
|
|
@@ -11,6 +10,7 @@ import { IssueAPI } from '../../issues/Issues.js';
|
|
|
11
10
|
import { Logger } from '../../observability/logging/Logger.js';
|
|
12
11
|
import { PlatformApi } from '../../services/platform/PlatformApi.js';
|
|
13
12
|
import { ContextOperatorFunction, TaskCompiler, TriggerCompiler } from './compilers/types.js';
|
|
13
|
+
import { ConnectionFactory } from '../../connection/types.js';
|
|
14
14
|
export type CompilerContext = {
|
|
15
15
|
compiler: ObservableCompiler;
|
|
16
16
|
log: Logger;
|
|
@@ -23,11 +23,6 @@ export type CompilerContext = {
|
|
|
23
23
|
issueProvider: IssueAPI;
|
|
24
24
|
configReader: ConfigReader;
|
|
25
25
|
cronRegistry: Map<string, string>;
|
|
26
|
-
webhookRegistry: Map<string, {
|
|
27
|
-
method: string;
|
|
28
|
-
path: string;
|
|
29
|
-
options: any;
|
|
30
|
-
}>;
|
|
31
26
|
organisationId: string;
|
|
32
27
|
};
|
|
33
28
|
export type CompilerFunc<In = any, Out = any, T extends Task<In, Out> = Task<In, Out>> = (ctx: CompilerContext, task: T) => OperatorFunction<In, Out>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObservableCompiler.d.ts","sourceRoot":"","sources":["../../../../src/src/interpreter/memory/ObservableCompiler.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"ObservableCompiler.d.ts","sourceRoot":"","sources":["../../../../src/src/interpreter/memory/ObservableCompiler.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,MAAM,CAAC;AAEpD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,IAAI,EAAY,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAe,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AASrE,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAG9F,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,MAAM,MAAM,eAAe,GAAG;IAC1B,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,eAAe,CAAC;IACjC,UAAU,EAAE,iBAAiB,CAAC;IAC9B,WAAW,EAAE,WAAW,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,QAAQ,CAAC;IACxB,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,cAAc,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,YAAY,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,SAAS,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CACrF,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,CAAC,KACN,gBAAgB,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAE/B,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,aAAa,CAAkD;IACvE,OAAO,CAAC,gBAAgB,CAAgD;;IAgBxE,WAAW,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,KAAK,GAAG,IAAI,EACzC,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,GACpB,uBAAuB,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC;IAe1C,cAAc,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,SAAS,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,EAC3D,GAAG,EAAE,eAAe,EACpB,OAAO,EAAE,CAAC,EACV,MAAM,EAAE,WAAW,GACpB,UAAU,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAerC,YAAY,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,SAAS,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;IAKjF,eAAe,CAAC,GAAG,EAAE,CAAC,SAAS,OAAO,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,eAAe,CAAC,GAAG,EAAE,CAAC,CAAC;CAIjF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catch.d.ts","sourceRoot":"","sources":["../../../../../src/src/interpreter/memory/compilers/catch.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAG5D,OAAO,EAA2B,YAAY,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"catch.d.ts","sourceRoot":"","sources":["../../../../../src/src/interpreter/memory/compilers/catch.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAG5D,OAAO,EAA2B,YAAY,EAAE,MAAM,YAAY,CAAC;AAsFnE,eAAO,MAAM,aAAa,EAAE,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAGrE,CAAC"}
|
|
@@ -22,13 +22,9 @@ function compileCatch(compilerCtx, task) {
|
|
|
22
22
|
return (src) => src.pipe((0, rxjs_1.mergeMap)((ctx) => {
|
|
23
23
|
return baseOperator((0, rxjs_1.of)(ctx)).pipe((0, rxjs_1.catchError)((error) => {
|
|
24
24
|
return compilerCtx.tracer.startActiveSpan(`catch`, (span) => {
|
|
25
|
-
// TODO: do we even want this here? Can't be async in here I believe
|
|
26
|
-
// await sendTaskStartEvent(task.id, span);
|
|
27
25
|
span.setAttribute('execution.id', ctx.executionId);
|
|
28
26
|
span.setAttribute('task.type', 'catch');
|
|
29
|
-
span.setAttribute('type', 'task');
|
|
30
27
|
if (error instanceof Error) {
|
|
31
|
-
span.setAttribute('status', 'fail');
|
|
32
28
|
span.recordException(error);
|
|
33
29
|
span.setAttribute('error.message', error.message);
|
|
34
30
|
span.setAttribute('error.stack', error.stack ?? '');
|
|
@@ -66,7 +62,6 @@ function compileCatch(compilerCtx, task) {
|
|
|
66
62
|
ctx.log.error('execution has encountered an error', {
|
|
67
63
|
error: error,
|
|
68
64
|
});
|
|
69
|
-
span.setAttribute('status', 'fail');
|
|
70
65
|
span.setAttribute('error', `${error}`);
|
|
71
66
|
span.end();
|
|
72
67
|
return errorOperator((0, rxjs_1.of)(ctx.withData(new ExecutionError_js_1.ExecutionError(ctx, `${error}`, { cause: error }), { recoveredFromCatch: true })));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fn.d.ts","sourceRoot":"","sources":["../../../../../src/src/interpreter/memory/compilers/fn.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"fn.d.ts","sourceRoot":"","sources":["../../../../../src/src/interpreter/memory/compilers/fn.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAEtD,OAAO,EAA2B,YAAY,EAAE,MAAM,YAAY,CAAC;AAiCnE,eAAO,MAAM,UAAU,EAAE,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAG/D,CAAC"}
|