@versori/run 0.4.4 → 0.5.0-alpha.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/src/connection/DirectConnectionFactory.d.ts.map +1 -1
- package/esm/src/connection/DirectConnectionFactory.js +2 -2
- package/esm/src/connection/internal/CredentialHolder.d.ts.map +1 -1
- package/esm/src/connection/internal/CredentialHolder.js +1 -1
- package/esm/src/connection/internal/FetchBuilder.d.ts +9 -2
- package/esm/src/connection/internal/FetchBuilder.d.ts.map +1 -1
- package/esm/src/connection/internal/FetchBuilder.js +120 -4
- package/esm/src/connection/internal/OutboundConnectionFactory.d.ts.map +1 -1
- package/esm/src/connection/internal/OutboundConnectionFactory.js +2 -2
- package/esm/src/context/Context.d.ts +1 -0
- package/esm/src/context/Context.d.ts.map +1 -1
- package/esm/src/context/Context.js +3 -0
- package/esm/src/context/ContextProvider.d.ts +1 -1
- package/esm/src/context/ContextProvider.d.ts.map +1 -1
- package/esm/src/context/ContextProvider.js +1 -1
- package/esm/src/dsl/Workflow.d.ts.map +1 -1
- package/esm/src/dsl/Workflow.js +2 -0
- package/esm/src/dsl/http/types.d.ts +2 -0
- package/esm/src/dsl/http/types.d.ts.map +1 -1
- package/esm/src/dsl/http/versori/configloader.js +1 -1
- package/esm/src/dsl/http/versori/cronapi.d.ts +2 -3
- package/esm/src/dsl/http/versori/cronapi.d.ts.map +1 -1
- package/esm/src/dsl/http/versori/cronapi.js +14 -15
- package/esm/src/dsl/http/versori/kvapi/core/OpenAPI.js +1 -1
- package/esm/src/dsl/http/versori/webhookmiddleware.d.ts.map +1 -1
- package/esm/src/dsl/http/versori/webhookmiddleware.js +69 -38
- package/esm/src/dsl/triggers/WebhookTrigger.d.ts.map +1 -1
- package/esm/src/dsl/triggers/WebhookTrigger.js +3 -1
- package/esm/src/internal/InternalAuth.d.ts +0 -1
- package/esm/src/internal/InternalAuth.d.ts.map +1 -1
- package/esm/src/internal/InternalAuth.js +1 -14
- package/esm/src/internal/constants.d.ts +3 -1
- package/esm/src/internal/constants.d.ts.map +1 -1
- package/esm/src/internal/constants.js +4 -1
- package/esm/src/internal/supervisor.d.ts +25 -0
- package/esm/src/internal/supervisor.d.ts.map +1 -0
- package/esm/src/internal/supervisor.js +156 -0
- package/esm/src/interpreter/durable/DurableInterpreter.d.ts +8 -2
- package/esm/src/interpreter/durable/DurableInterpreter.d.ts.map +1 -1
- package/esm/src/interpreter/durable/DurableInterpreter.js +79 -27
- package/esm/src/interpreter/durable/ObservableCompiler.d.ts +6 -1
- package/esm/src/interpreter/durable/ObservableCompiler.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 -0
- package/esm/src/interpreter/durable/compilers/fn.d.ts.map +1 -1
- package/esm/src/interpreter/durable/compilers/fn.js +19 -4
- package/esm/src/interpreter/durable/compilers/http.d.ts.map +1 -1
- package/esm/src/interpreter/durable/compilers/http.js +40 -7
- package/esm/src/interpreter/durable/compilers/schedule.d.ts.map +1 -1
- package/esm/src/interpreter/durable/compilers/schedule.js +2 -1
- package/esm/src/interpreter/durable/compilers/webhook.d.ts.map +1 -1
- package/esm/src/interpreter/durable/compilers/webhook.js +14 -4
- package/esm/src/interpreter/memory/MemoryInterpreter.d.ts +7 -1
- package/esm/src/interpreter/memory/MemoryInterpreter.d.ts.map +1 -1
- package/esm/src/interpreter/memory/MemoryInterpreter.js +78 -18
- package/esm/src/interpreter/memory/ObservableCompiler.d.ts +6 -1
- 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 +1 -0
- package/esm/src/interpreter/memory/compilers/fn.d.ts.map +1 -1
- package/esm/src/interpreter/memory/compilers/fn.js +19 -16
- package/esm/src/interpreter/memory/compilers/http.d.ts.map +1 -1
- package/esm/src/interpreter/memory/compilers/http.js +39 -6
- package/esm/src/interpreter/memory/compilers/schedule.d.ts.map +1 -1
- package/esm/src/interpreter/memory/compilers/schedule.js +2 -1
- package/esm/src/interpreter/memory/compilers/webhook.d.ts.map +1 -1
- package/esm/src/interpreter/memory/compilers/webhook.js +15 -4
- package/esm/src/issues/Issues.js +1 -1
- package/esm/src/observability/logging/ConsoleLogger.d.ts.map +1 -1
- package/package.json +3 -1
- package/script/src/connection/DirectConnectionFactory.d.ts.map +1 -1
- package/script/src/connection/DirectConnectionFactory.js +2 -2
- package/script/src/connection/internal/CredentialHolder.d.ts.map +1 -1
- package/script/src/connection/internal/CredentialHolder.js +1 -1
- package/script/src/connection/internal/FetchBuilder.d.ts +9 -2
- package/script/src/connection/internal/FetchBuilder.d.ts.map +1 -1
- package/script/src/connection/internal/FetchBuilder.js +143 -4
- package/script/src/connection/internal/OutboundConnectionFactory.d.ts.map +1 -1
- package/script/src/connection/internal/OutboundConnectionFactory.js +2 -2
- package/script/src/context/Context.d.ts +1 -0
- package/script/src/context/Context.d.ts.map +1 -1
- package/script/src/context/Context.js +3 -0
- package/script/src/context/ContextProvider.d.ts +1 -1
- package/script/src/context/ContextProvider.d.ts.map +1 -1
- package/script/src/context/ContextProvider.js +1 -1
- package/script/src/dsl/Workflow.d.ts.map +1 -1
- package/script/src/dsl/Workflow.js +2 -0
- package/script/src/dsl/http/types.d.ts +2 -0
- package/script/src/dsl/http/types.d.ts.map +1 -1
- package/script/src/dsl/http/versori/configloader.js +1 -1
- package/script/src/dsl/http/versori/cronapi.d.ts +2 -3
- package/script/src/dsl/http/versori/cronapi.d.ts.map +1 -1
- package/script/src/dsl/http/versori/cronapi.js +14 -15
- package/script/src/dsl/http/versori/kvapi/core/OpenAPI.js +1 -1
- package/script/src/dsl/http/versori/webhookmiddleware.d.ts.map +1 -1
- package/script/src/dsl/http/versori/webhookmiddleware.js +69 -38
- package/script/src/dsl/triggers/WebhookTrigger.d.ts.map +1 -1
- package/script/src/dsl/triggers/WebhookTrigger.js +3 -1
- package/script/src/internal/InternalAuth.d.ts +0 -1
- package/script/src/internal/InternalAuth.d.ts.map +1 -1
- package/script/src/internal/InternalAuth.js +0 -13
- package/script/src/internal/constants.d.ts +3 -1
- package/script/src/internal/constants.d.ts.map +1 -1
- package/script/src/internal/constants.js +5 -2
- package/script/src/internal/supervisor.d.ts +25 -0
- package/script/src/internal/supervisor.d.ts.map +1 -0
- package/script/src/internal/supervisor.js +163 -0
- package/script/src/interpreter/durable/DurableInterpreter.d.ts +8 -2
- package/script/src/interpreter/durable/DurableInterpreter.d.ts.map +1 -1
- package/script/src/interpreter/durable/DurableInterpreter.js +84 -32
- package/script/src/interpreter/durable/ObservableCompiler.d.ts +6 -1
- package/script/src/interpreter/durable/ObservableCompiler.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 -0
- package/script/src/interpreter/durable/compilers/fn.d.ts.map +1 -1
- package/script/src/interpreter/durable/compilers/fn.js +19 -4
- package/script/src/interpreter/durable/compilers/http.d.ts.map +1 -1
- package/script/src/interpreter/durable/compilers/http.js +40 -7
- package/script/src/interpreter/durable/compilers/schedule.d.ts.map +1 -1
- package/script/src/interpreter/durable/compilers/schedule.js +2 -1
- package/script/src/interpreter/durable/compilers/webhook.d.ts.map +1 -1
- package/script/src/interpreter/durable/compilers/webhook.js +14 -4
- package/script/src/interpreter/memory/MemoryInterpreter.d.ts +7 -1
- package/script/src/interpreter/memory/MemoryInterpreter.d.ts.map +1 -1
- package/script/src/interpreter/memory/MemoryInterpreter.js +78 -18
- package/script/src/interpreter/memory/ObservableCompiler.d.ts +6 -1
- 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 +1 -0
- package/script/src/interpreter/memory/compilers/fn.d.ts.map +1 -1
- package/script/src/interpreter/memory/compilers/fn.js +19 -16
- package/script/src/interpreter/memory/compilers/http.d.ts.map +1 -1
- package/script/src/interpreter/memory/compilers/http.js +39 -6
- package/script/src/interpreter/memory/compilers/schedule.d.ts.map +1 -1
- package/script/src/interpreter/memory/compilers/schedule.js +2 -1
- package/script/src/interpreter/memory/compilers/webhook.d.ts.map +1 -1
- package/script/src/interpreter/memory/compilers/webhook.js +15 -4
- package/script/src/issues/Issues.js +1 -1
- package/script/src/observability/logging/ConsoleLogger.d.ts.map +1 -1
- package/esm/src/dsl/http/default.d.ts +0 -26
- package/esm/src/dsl/http/default.d.ts.map +0 -1
- package/esm/src/dsl/http/default.js +0 -56
- package/esm/src/dsl/http/versori/cli.d.ts +0 -2
- package/esm/src/dsl/http/versori/cli.d.ts.map +0 -1
- package/esm/src/dsl/http/versori/cli.js +0 -32
- package/esm/src/dsl/http/versori/constants.d.ts +0 -20
- package/esm/src/dsl/http/versori/constants.d.ts.map +0 -1
- package/esm/src/dsl/http/versori/constants.js +0 -37
- package/esm/src/dsl/http/versori/internalauth.d.ts +0 -15
- package/esm/src/dsl/http/versori/internalauth.d.ts.map +0 -1
- package/esm/src/dsl/http/versori/internalauth.js +0 -102
- package/esm/src/dsl/http/versori/proxyroundtripper.d.ts +0 -23
- package/esm/src/dsl/http/versori/proxyroundtripper.d.ts.map +0 -1
- package/esm/src/dsl/http/versori/proxyroundtripper.js +0 -208
- package/esm/src/internal/cli.d.ts +0 -2
- package/esm/src/internal/cli.d.ts.map +0 -1
- package/esm/src/internal/cli.js +0 -32
- package/script/src/dsl/http/default.d.ts +0 -26
- package/script/src/dsl/http/default.d.ts.map +0 -1
- package/script/src/dsl/http/default.js +0 -60
- package/script/src/dsl/http/versori/cli.d.ts +0 -2
- package/script/src/dsl/http/versori/cli.d.ts.map +0 -1
- package/script/src/dsl/http/versori/cli.js +0 -35
- package/script/src/dsl/http/versori/constants.d.ts +0 -20
- package/script/src/dsl/http/versori/constants.d.ts.map +0 -1
- package/script/src/dsl/http/versori/constants.js +0 -40
- package/script/src/dsl/http/versori/internalauth.d.ts +0 -15
- package/script/src/dsl/http/versori/internalauth.d.ts.map +0 -1
- package/script/src/dsl/http/versori/internalauth.js +0 -106
- package/script/src/dsl/http/versori/proxyroundtripper.d.ts +0 -23
- package/script/src/dsl/http/versori/proxyroundtripper.d.ts.map +0 -1
- package/script/src/dsl/http/versori/proxyroundtripper.js +0 -212
- package/script/src/internal/cli.d.ts +0 -2
- package/script/src/internal/cli.d.ts.map +0 -1
- package/script/src/internal/cli.js +0 -35
|
@@ -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":"AA+BA,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAGtD,OAAO,EAA2B,YAAY,EAAE,MAAM,YAAY,CAAC;AA0CnE,eAAO,MAAM,UAAU,EAAE,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAG/D,CAAC"}
|
|
@@ -15,19 +15,34 @@ 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");
|
|
18
19
|
function compileFn(compilerCtx, task) {
|
|
19
20
|
return (src) => src.pipe((0, rxjs_1.tap)({
|
|
20
21
|
complete: () => compilerCtx.log.debug('fn.complete'),
|
|
21
22
|
}), (0, rxjs_1.mergeMap)(async (ctx) => {
|
|
22
23
|
return await compilerCtx.tracer.startActiveSpan(`fn-${task.id}`, async (span) => {
|
|
23
24
|
span.setAttribute('task.id', task.id);
|
|
25
|
+
span.setAttribute('type', 'task');
|
|
26
|
+
span.setAttribute('task.type', 'fn');
|
|
24
27
|
span.setAttribute('execution.id', ctx.executionId);
|
|
25
|
-
|
|
28
|
+
try {
|
|
29
|
+
const spanContext = span.spanContext();
|
|
30
|
+
const ctxWithLogger = ctx.withLogger(ctx.log.child({ spanId: spanContext.spanId, traceId: spanContext.traceId }));
|
|
31
|
+
let result;
|
|
32
|
+
if (typeof ctx.idx === 'number') {
|
|
33
|
+
result = ctx.withData(await task._fn(ctxWithLogger, ctx.idx));
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
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
|
+
return result;
|
|
42
|
+
}
|
|
43
|
+
finally {
|
|
26
44
|
span.end();
|
|
27
|
-
return ctx.withData(await task._fn(ctx, ctx.idx));
|
|
28
45
|
}
|
|
29
|
-
span.end();
|
|
30
|
-
return ctx.withData(await task._fn(ctx));
|
|
31
46
|
});
|
|
32
47
|
}));
|
|
33
48
|
}
|
|
@@ -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":"AAqBA,OAAO,EAAmB,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAG/E,OAAO,EAA2B,YAAY,EAAE,MAAM,YAAY,CAAC;AAuHnE,eAAO,MAAM,YAAY,EAAE,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAG5E,CAAC"}
|
|
@@ -15,18 +15,32 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
15
15
|
exports.httpCompiler = void 0;
|
|
16
16
|
const rxjs_1 = require("rxjs");
|
|
17
17
|
const operators_1 = require("rxjs/operators");
|
|
18
|
-
const HttpTask_js_1 = require("../../../dsl/tasks/HttpTask.js");
|
|
19
18
|
const DynamicFetchFactory_js_1 = require("../../../connection/DynamicFetchFactory.js");
|
|
19
|
+
const FetchBuilder_js_1 = require("../../../connection/internal/FetchBuilder.js");
|
|
20
20
|
const StaticFetchFactory_js_1 = require("../../../connection/StaticFetchFactory.js");
|
|
21
|
+
const HttpTask_js_1 = require("../../../dsl/tasks/HttpTask.js");
|
|
22
|
+
const supervisor_js_1 = require("../../../internal/supervisor.js");
|
|
21
23
|
function compileHttp(compilerCtx, task) {
|
|
22
24
|
const cnxMap = compilerCtx.configReader.getCnxMapping(task.opts.connection);
|
|
23
25
|
let fetchFactory;
|
|
24
26
|
if (!cnxMap) {
|
|
25
|
-
compilerCtx.log.
|
|
26
|
-
|
|
27
|
+
compilerCtx.log.warn(`Connection ${task.opts.connection} not found, using default fetch with no credentials`);
|
|
28
|
+
if (supervisor_js_1.enabled) {
|
|
29
|
+
// missing connection map and we are in supervised mode, so we use the fake fetcher
|
|
30
|
+
fetchFactory = Promise.resolve(new StaticFetchFactory_js_1.StaticFetchFactory(new FetchBuilder_js_1.FetchBuilder(globalThis.fetch, { name: task.opts.connection }).buildSupervisedFetch()));
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
// missing connection map and not in supervised mode, so we use global fetch
|
|
34
|
+
fetchFactory = Promise.resolve(new StaticFetchFactory_js_1.StaticFetchFactory(globalThis.fetch));
|
|
35
|
+
}
|
|
27
36
|
}
|
|
28
37
|
else if (cnxMap.dynamic) {
|
|
29
|
-
|
|
38
|
+
if (cnxMap.mockWithAI) {
|
|
39
|
+
fetchFactory = Promise.resolve(new StaticFetchFactory_js_1.StaticFetchFactory(new FetchBuilder_js_1.FetchBuilder(globalThis.fetch, { name: task.opts.connection }).buildSupervisedFetch()));
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
fetchFactory = Promise.resolve(new DynamicFetchFactory_js_1.DynamicFetchFactory(compilerCtx.cnxFactory, compilerCtx.platformApi, compilerCtx.organisationId, cnxMap.templateId));
|
|
43
|
+
}
|
|
30
44
|
}
|
|
31
45
|
else {
|
|
32
46
|
fetchFactory = compilerCtx.platformApi.getConnection({
|
|
@@ -36,8 +50,21 @@ function compileHttp(compilerCtx, task) {
|
|
|
36
50
|
},
|
|
37
51
|
throwOnError: true,
|
|
38
52
|
})
|
|
39
|
-
.then(({ data }) =>
|
|
40
|
-
.
|
|
53
|
+
.then(({ data }) => {
|
|
54
|
+
if (cnxMap.mockWithAI) {
|
|
55
|
+
// use the fake fetcher that calls the supervisor to generate a mock reponse
|
|
56
|
+
return new StaticFetchFactory_js_1.StaticFetchFactory(new FetchBuilder_js_1.FetchBuilder(globalThis.fetch, data).buildSupervisedFetch());
|
|
57
|
+
}
|
|
58
|
+
return Promise.all([compilerCtx.cnxFactory.fetcher(data), data.baseUrl ?? ''])
|
|
59
|
+
.then(([fetcher, baseUrl]) => new StaticFetchFactory_js_1.StaticFetchFactory(fetcher, baseUrl));
|
|
60
|
+
})
|
|
61
|
+
.catch((err) => {
|
|
62
|
+
compilerCtx.log.error(`Failed to get connection ${task.opts.connection}`, err);
|
|
63
|
+
if (supervisor_js_1.enabled) {
|
|
64
|
+
return new StaticFetchFactory_js_1.StaticFetchFactory(new FetchBuilder_js_1.FetchBuilder(globalThis.fetch, { name: task.opts.connection }).build());
|
|
65
|
+
}
|
|
66
|
+
throw err;
|
|
67
|
+
});
|
|
41
68
|
}
|
|
42
69
|
async function http(ctx) {
|
|
43
70
|
const [fetch, baseUrl] = await fetchFactory.then((ff) => Promise.all([ff.fetcher(ctx), ff.baseUrl(ctx)]));
|
|
@@ -51,10 +78,16 @@ function compileHttp(compilerCtx, task) {
|
|
|
51
78
|
return compilerCtx.tracer.startActiveSpan(`http-${task.id}`, async (span) => {
|
|
52
79
|
span.setAttribute('task.id', task.id);
|
|
53
80
|
span.setAttribute('task.type', 'http');
|
|
81
|
+
span.setAttribute('type', 'task');
|
|
54
82
|
span.setAttribute('execution.id', ctx.executionId);
|
|
55
83
|
span.setAttribute('connection.name', task.opts.connection);
|
|
84
|
+
const spanContext = span.spanContext();
|
|
56
85
|
try {
|
|
57
|
-
|
|
86
|
+
const result = await http(ctx.withLogger(ctx.log.child({ spanId: spanContext.spanId, traceId: spanContext.traceId })));
|
|
87
|
+
if (supervisor_js_1.enabled) {
|
|
88
|
+
span.setAttribute('response.body', JSON.stringify(result.data));
|
|
89
|
+
}
|
|
90
|
+
return result;
|
|
58
91
|
}
|
|
59
92
|
catch (error) {
|
|
60
93
|
if (error instanceof Error) {
|
|
@@ -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":"AAiBA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAQzF,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAmJ7C,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");
|
|
18
17
|
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
|
|
@@ -106,6 +106,7 @@ 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');
|
|
109
110
|
span.setAttribute('schedule', trigger.schedule);
|
|
110
111
|
span.setAttribute('project.id', projectId);
|
|
111
112
|
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":"
|
|
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,CAwTxE,CAAC"}
|
|
@@ -18,12 +18,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
18
18
|
exports.webhookCompiler = void 0;
|
|
19
19
|
const cors_1 = __importDefault(require("cors"));
|
|
20
20
|
const express_1 = __importDefault(require("express"));
|
|
21
|
+
const express_xml_bodyparser_1 = __importDefault(require("express-xml-bodyparser"));
|
|
21
22
|
const promises_1 = require("node:stream/promises");
|
|
22
23
|
const rxjs_1 = require("rxjs");
|
|
23
24
|
const webhookmiddleware_js_1 = require("../../../dsl/http/versori/webhookmiddleware.js");
|
|
24
25
|
const WebhookTrigger_js_1 = require("../../../dsl/triggers/WebhookTrigger.js");
|
|
25
26
|
const constants_js_1 = require("../../../internal/constants.js");
|
|
26
|
-
const express_xml_bodyparser_1 = __importDefault(require("express-xml-bodyparser"));
|
|
27
27
|
const xml2jsDefaults = {
|
|
28
28
|
explicitArray: false,
|
|
29
29
|
normalize: false,
|
|
@@ -109,6 +109,7 @@ exports.webhookCompiler = {
|
|
|
109
109
|
else {
|
|
110
110
|
ctx.webhookRouter.use(express_1.default.raw({ type: '*/*', limit: '50mb' }));
|
|
111
111
|
}
|
|
112
|
+
ctx.webhookRegistry.set(trigger.id, { method, path: `/${trigger.id}`, options: trigger.options });
|
|
112
113
|
return new rxjs_1.Observable((subscriber) => {
|
|
113
114
|
if (!ctx.webhookRouter) {
|
|
114
115
|
throw new Error('Router not available in compiler context');
|
|
@@ -137,8 +138,11 @@ exports.webhookCompiler = {
|
|
|
137
138
|
await ctx.tracer.startActiveSpan(`webhook-${trigger.id}`, (span) => {
|
|
138
139
|
span.setAttribute('task.id', trigger.id);
|
|
139
140
|
span.setAttribute('task.type', 'webhook');
|
|
141
|
+
span.setAttribute('type', 'task');
|
|
140
142
|
const staticActivation = res.locals.activation;
|
|
141
|
-
|
|
143
|
+
let executionCtx = ctx.contextProvider.create(staticActivation, req.body, ctxOptionsFn(req, res));
|
|
144
|
+
const spanContext = span.spanContext();
|
|
145
|
+
executionCtx = executionCtx.withLogger(executionCtx.log.child({ spanId: spanContext.spanId, traceId: spanContext.traceId }));
|
|
142
146
|
span.setAttribute('execution.id', executionCtx.executionId);
|
|
143
147
|
try {
|
|
144
148
|
subscriber.next(executionCtx);
|
|
@@ -173,6 +177,7 @@ exports.webhookCompiler = {
|
|
|
173
177
|
await ctx.tracer.startActiveSpan(`webhook-${trigger.id}`, (span) => {
|
|
174
178
|
span.setAttribute('task.id', trigger.id);
|
|
175
179
|
span.setAttribute('task.type', 'webhook');
|
|
180
|
+
span.setAttribute('type', 'task');
|
|
176
181
|
span.setAttribute('user.id', req.params.userId);
|
|
177
182
|
const userId = req.params.userId;
|
|
178
183
|
const activation = res.locals.activation;
|
|
@@ -189,7 +194,9 @@ exports.webhookCompiler = {
|
|
|
189
194
|
span.end();
|
|
190
195
|
return;
|
|
191
196
|
}
|
|
192
|
-
|
|
197
|
+
let executionCtx = ctx.contextProvider.create(activation, req.body, ctxOptionsFn(req, res));
|
|
198
|
+
const spanContext = span.spanContext();
|
|
199
|
+
executionCtx = executionCtx.withLogger(executionCtx.log.child({ spanId: spanContext.spanId, traceId: spanContext.traceId }));
|
|
193
200
|
span.setAttribute('execution.id', executionCtx.executionId);
|
|
194
201
|
const errors = [];
|
|
195
202
|
try {
|
|
@@ -228,6 +235,7 @@ exports.webhookCompiler = {
|
|
|
228
235
|
}), async (req, res) => {
|
|
229
236
|
await ctx.tracer.startActiveSpan(`webhook-${trigger.id}`, (span) => {
|
|
230
237
|
span.setAttribute('task.id', trigger.id);
|
|
238
|
+
span.setAttribute('type', 'task');
|
|
231
239
|
span.setAttribute('task.type', 'webhook');
|
|
232
240
|
span.setAttribute('activation.id', req.params.activationId);
|
|
233
241
|
const activation = res.locals.activation;
|
|
@@ -243,7 +251,9 @@ exports.webhookCompiler = {
|
|
|
243
251
|
span.end();
|
|
244
252
|
return;
|
|
245
253
|
}
|
|
246
|
-
|
|
254
|
+
let activationCtx = ctx.contextProvider.create(activation, req.body, ctxOptionsFn(req, res));
|
|
255
|
+
const spanContext = span.spanContext();
|
|
256
|
+
activationCtx = activationCtx.withLogger(activationCtx.log.child({ spanId: spanContext.spanId, traceId: spanContext.traceId }));
|
|
247
257
|
span.setAttribute('execution.id', activationCtx.executionId);
|
|
248
258
|
try {
|
|
249
259
|
subscriber.next(activationCtx);
|
|
@@ -43,6 +43,11 @@ type Registration = {
|
|
|
43
43
|
sigintListener: () => void;
|
|
44
44
|
subscription?: Subscription;
|
|
45
45
|
};
|
|
46
|
+
type WebhookRegistry = Map<string, {
|
|
47
|
+
method: string;
|
|
48
|
+
path: string;
|
|
49
|
+
options: any;
|
|
50
|
+
}>;
|
|
46
51
|
/**
|
|
47
52
|
* MemoryInterpreter is the default interpreter for executing Versori workflows. It handles registration and execution
|
|
48
53
|
* of workflows triggered by schedules and webhooks.
|
|
@@ -71,6 +76,7 @@ export declare class MemoryInterpreter {
|
|
|
71
76
|
private readonly webhookRouter;
|
|
72
77
|
private readonly cronRouter;
|
|
73
78
|
private cronRegistry;
|
|
79
|
+
private webhookRegistry;
|
|
74
80
|
private readonly cnxFactory;
|
|
75
81
|
private readonly cronProvider;
|
|
76
82
|
private readonly tracer;
|
|
@@ -82,7 +88,7 @@ export declare class MemoryInterpreter {
|
|
|
82
88
|
private cronServer?;
|
|
83
89
|
private shutdownServer?;
|
|
84
90
|
private isShuttingDown;
|
|
85
|
-
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);
|
|
91
|
+
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
92
|
static newInstance(options?: MemoryInterpreterOptions): Promise<MemoryInterpreter>;
|
|
87
93
|
register<O>(workflow: Workflow<O>, options?: MemoryInterpreterOptions): Registration;
|
|
88
94
|
start(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryInterpreter.d.ts","sourceRoot":"","sources":["../../../../src/src/interpreter/memory/MemoryInterpreter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MemoryInterpreter.d.ts","sourceRoot":"","sources":["../../../../src/src/interpreter/memory/MemoryInterpreter.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
16
16
|
};
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
exports.MemoryInterpreter = void 0;
|
|
19
|
+
const protobuf_1 = require("@bufbuild/protobuf");
|
|
20
|
+
const wkt_1 = require("@bufbuild/protobuf/wkt");
|
|
19
21
|
const api_1 = __importDefault(require("@opentelemetry/api"));
|
|
20
22
|
const exporter_trace_otlp_proto_1 = require("@opentelemetry/exporter-trace-otlp-proto");
|
|
21
23
|
const resources_1 = require("@opentelemetry/resources");
|
|
@@ -24,26 +26,53 @@ const express_1 = __importDefault(require("express"));
|
|
|
24
26
|
const rxjs_1 = require("rxjs");
|
|
25
27
|
const DirectConnectionFactory_js_1 = require("../../connection/DirectConnectionFactory.js");
|
|
26
28
|
const ContextProvider_js_1 = require("../../context/ContextProvider.js");
|
|
27
|
-
const default_js_1 = require("../../dsl/http/default.js");
|
|
28
29
|
const configloader_js_1 = require("../../dsl/http/versori/configloader.js");
|
|
29
|
-
const constants_js_1 = require("../../dsl/http/versori/constants.js");
|
|
30
30
|
const cronapi_js_1 = require("../../dsl/http/versori/cronapi.js");
|
|
31
31
|
const Workflow_js_1 = require("../../dsl/Workflow.js");
|
|
32
|
+
const constants_js_1 = require("../../internal/constants.js");
|
|
33
|
+
const supervisor_js_1 = require("../../internal/supervisor.js");
|
|
32
34
|
const Issues_js_1 = require("../../issues/Issues.js");
|
|
33
35
|
const MemoryKeyValueProvider_js_1 = require("../../kv/memory/MemoryKeyValueProvider.js");
|
|
34
36
|
const NatsKeyValueProvider_js_1 = require("../../kv/nats/NatsKeyValueProvider.js");
|
|
35
37
|
const ConsoleLogger_js_1 = require("../../observability/logging/ConsoleLogger.js");
|
|
38
|
+
const mod_js_1 = require("../../services/credentials/mod.js");
|
|
36
39
|
const PlatformApi_js_1 = require("../../services/platform/PlatformApi.js");
|
|
37
40
|
const ObservableCompiler_js_1 = require("./ObservableCompiler.js");
|
|
38
|
-
function getKVProvider(
|
|
39
|
-
if (
|
|
41
|
+
function getKVProvider() {
|
|
42
|
+
if (supervisor_js_1.enabled) {
|
|
40
43
|
return Promise.resolve(new MemoryKeyValueProvider_js_1.MemoryKeyValueProvider());
|
|
41
44
|
}
|
|
42
45
|
return NatsKeyValueProvider_js_1.NatsKeyValueProvider.fromEnv();
|
|
43
46
|
}
|
|
44
|
-
function
|
|
45
|
-
|
|
46
|
-
|
|
47
|
+
function getCredentialsProvider(d) {
|
|
48
|
+
return {
|
|
49
|
+
async getRaw(name, _activationId) {
|
|
50
|
+
const response = await d['credentials'].get({ id: name, organisationId: '' });
|
|
51
|
+
if (!response.credential) {
|
|
52
|
+
throw new Error(`Failed to get credential: ${name}`);
|
|
53
|
+
}
|
|
54
|
+
const rawData = (0, protobuf_1.create)(mod_js_1.credentialv1alpha1.CredentialDataRawSchema, response.credential.data);
|
|
55
|
+
return rawData.raw;
|
|
56
|
+
},
|
|
57
|
+
async getAccessToken(name, forceRefresh, _activationId) {
|
|
58
|
+
const response = await d['tokens'].getToken({ credentialId: name, forceRefresh: forceRefresh || false });
|
|
59
|
+
if (!response.token) {
|
|
60
|
+
throw new Error(`Failed to get token for credential: ${name}`);
|
|
61
|
+
}
|
|
62
|
+
return {
|
|
63
|
+
accessToken: response.token.accessToken,
|
|
64
|
+
tokenType: response.token.tokenType,
|
|
65
|
+
expiry: response.token.expiry ? new Date((0, wkt_1.timestampMs)(response.token.expiry)) : undefined,
|
|
66
|
+
};
|
|
67
|
+
},
|
|
68
|
+
async getOAuth1Metadata(name, _activationId) {
|
|
69
|
+
const response = await d['oauth1'].getAuthorizationMetadata({ credentialId: name });
|
|
70
|
+
if (!response) {
|
|
71
|
+
throw new Error(`Failed to get OAuth1 metadata for credential: ${name}`);
|
|
72
|
+
}
|
|
73
|
+
return response;
|
|
74
|
+
},
|
|
75
|
+
};
|
|
47
76
|
}
|
|
48
77
|
/**
|
|
49
78
|
* MemoryInterpreter is the default interpreter for executing Versori workflows. It handles registration and execution
|
|
@@ -67,7 +96,7 @@ function getRoundTripperFactory(log) {
|
|
|
67
96
|
* ```
|
|
68
97
|
*/
|
|
69
98
|
class MemoryInterpreter {
|
|
70
|
-
constructor(log, compiler, contextProvider, webhookRouter, cronRouter, cronRegistry, cnxFactory, cronProvider, tracer, issuesProvider, cfgReader, otelSDK) {
|
|
99
|
+
constructor(log, compiler, contextProvider, webhookRouter, cronRouter, cronRegistry, webhookRegistry, cnxFactory, cronProvider, tracer, issuesProvider, cfgReader, otelSDK) {
|
|
71
100
|
Object.defineProperty(this, "log", {
|
|
72
101
|
enumerable: true,
|
|
73
102
|
configurable: true,
|
|
@@ -104,6 +133,12 @@ class MemoryInterpreter {
|
|
|
104
133
|
writable: true,
|
|
105
134
|
value: cronRegistry
|
|
106
135
|
});
|
|
136
|
+
Object.defineProperty(this, "webhookRegistry", {
|
|
137
|
+
enumerable: true,
|
|
138
|
+
configurable: true,
|
|
139
|
+
writable: true,
|
|
140
|
+
value: webhookRegistry
|
|
141
|
+
});
|
|
107
142
|
Object.defineProperty(this, "cnxFactory", {
|
|
108
143
|
enumerable: true,
|
|
109
144
|
configurable: true,
|
|
@@ -188,7 +223,6 @@ class MemoryInterpreter {
|
|
|
188
223
|
const otelTracesURL = Deno.env.get(constants_js_1.envVarOtelTracesURL);
|
|
189
224
|
let otelSDK;
|
|
190
225
|
const configReader = configloader_js_1.VersoriConfigReader.fromEnv(log);
|
|
191
|
-
const runLocal = Deno.env.get(constants_js_1.envVarLocalRun) === 'true';
|
|
192
226
|
await waitForReady(log);
|
|
193
227
|
// Do NOT change those attributes, they are used by the API to filter on
|
|
194
228
|
const resource = (0, resources_1.resourceFromAttributes)({
|
|
@@ -210,20 +244,30 @@ class MemoryInterpreter {
|
|
|
210
244
|
log.info('Starting OpenTelemetry SDK');
|
|
211
245
|
otelSDK.start();
|
|
212
246
|
}
|
|
247
|
+
else if (supervisor_js_1.enabled) {
|
|
248
|
+
otelSDK = new sdk_node_1.NodeSDK({
|
|
249
|
+
traceExporter: new supervisor_js_1.Fake(),
|
|
250
|
+
serviceName: serviceName,
|
|
251
|
+
resource: resource,
|
|
252
|
+
});
|
|
253
|
+
log.info('Starting Testing OpenTelemetry SDK');
|
|
254
|
+
otelSDK.start();
|
|
255
|
+
}
|
|
213
256
|
const tracer = api_1.default.trace.getTracer(serviceName, version);
|
|
214
|
-
const
|
|
257
|
+
const cnxFactory = DirectConnectionFactory_js_1.DirectConnectionFactory.fromEnv(log);
|
|
258
|
+
const credentialsProvider = getCredentialsProvider(cnxFactory);
|
|
215
259
|
const issuesProvider = new Issues_js_1.IssueImpl(log);
|
|
216
260
|
if (options.contextProvider) {
|
|
217
261
|
// no need to set up a key-value provider if options.contextProvider is already
|
|
218
262
|
// initialised.
|
|
219
|
-
return new MemoryInterpreter(log, compiler, options.contextProvider, express_1.default.Router(), express_1.default.Router(), new Map(),
|
|
263
|
+
return new MemoryInterpreter(log, compiler, options.contextProvider, express_1.default.Router(), express_1.default.Router(), new Map(), new Map(), cnxFactory, cronapi_js_1.CronAPIClient.fromEnv(), tracer, issuesProvider, configReader, otelSDK);
|
|
220
264
|
}
|
|
221
|
-
const kvp = await getKVProvider(
|
|
265
|
+
const kvp = await getKVProvider();
|
|
222
266
|
const platformApi = PlatformApi_js_1.PlatformApiImpl.fromEnv();
|
|
223
267
|
const organisationId = Deno.env.get(constants_js_1.envVarOrgId) || 'development';
|
|
224
268
|
const environmentId = Deno.env.get(constants_js_1.envVarEnvId) || 'development';
|
|
225
|
-
const ctxProvider = new ContextProvider_js_1.ContextProviderImpl(log, kvp,
|
|
226
|
-
return new MemoryInterpreter(log, compiler, ctxProvider, express_1.default.Router(), express_1.default.Router(), new Map(),
|
|
269
|
+
const ctxProvider = new ContextProvider_js_1.ContextProviderImpl(log, kvp, credentialsProvider, platformApi, organisationId, environmentId, issuesProvider);
|
|
270
|
+
return new MemoryInterpreter(log, compiler, ctxProvider, express_1.default.Router(), express_1.default.Router(), new Map(), new Map(), cnxFactory, cronapi_js_1.CronAPIClient.fromEnv(), tracer, issuesProvider, configReader, otelSDK);
|
|
227
271
|
}
|
|
228
272
|
register(workflow, options) {
|
|
229
273
|
const localAbortController = new AbortController();
|
|
@@ -242,6 +286,7 @@ class MemoryInterpreter {
|
|
|
242
286
|
cnxFactory: this.cnxFactory,
|
|
243
287
|
platformApi: PlatformApi_js_1.PlatformApiImpl.fromEnv(),
|
|
244
288
|
webhookRouter: this.webhookRouter,
|
|
289
|
+
webhookRegistry: this.webhookRegistry,
|
|
245
290
|
cronRouter: this.cronRouter,
|
|
246
291
|
cronRegistry: this.cronRegistry,
|
|
247
292
|
configReader: this.cfgReader,
|
|
@@ -262,9 +307,9 @@ class MemoryInterpreter {
|
|
|
262
307
|
this.registeredWorkflows.push(registration);
|
|
263
308
|
return registration;
|
|
264
309
|
}
|
|
265
|
-
start() {
|
|
266
|
-
const port = Deno.env.get(
|
|
267
|
-
const cronPort = Deno.env.get(
|
|
310
|
+
async start() {
|
|
311
|
+
const port = Deno.env.get(constants_js_1.envPort) || 3000;
|
|
312
|
+
const cronPort = Deno.env.get(constants_js_1.envCronPort) || 3001;
|
|
268
313
|
const webhookApp = (0, express_1.default)();
|
|
269
314
|
const cronApp = (0, express_1.default)();
|
|
270
315
|
cronApp.use(express_1.default.json());
|
|
@@ -288,6 +333,12 @@ class MemoryInterpreter {
|
|
|
288
333
|
ctx.log.error('MemoryInterpreter.executionError', {
|
|
289
334
|
error: err instanceof Error ? err.toString() : err,
|
|
290
335
|
});
|
|
336
|
+
this.tracer.startActiveSpan('done', (span) => {
|
|
337
|
+
span.setAttribute('error.message', err instanceof Error ? err.toString() : err);
|
|
338
|
+
span.setAttribute('execution.id', ctx.executionId);
|
|
339
|
+
span.setAttribute('result', 'fail');
|
|
340
|
+
span.end();
|
|
341
|
+
});
|
|
291
342
|
try {
|
|
292
343
|
ctx.options.onError?.(ctx.withData(err));
|
|
293
344
|
}
|
|
@@ -307,6 +358,11 @@ class MemoryInterpreter {
|
|
|
307
358
|
durationMs,
|
|
308
359
|
data: ctx.data,
|
|
309
360
|
});
|
|
361
|
+
this.tracer.startActiveSpan('done', (span) => {
|
|
362
|
+
span.setAttribute('execution.id', ctx.executionId);
|
|
363
|
+
span.setAttribute('result', 'pass');
|
|
364
|
+
span.end();
|
|
365
|
+
});
|
|
310
366
|
try {
|
|
311
367
|
ctx.options.onSuccess?.(ctx);
|
|
312
368
|
}
|
|
@@ -343,6 +399,9 @@ class MemoryInterpreter {
|
|
|
343
399
|
});
|
|
344
400
|
throw new Error('Unable to register scheduler tasks with central cron provider');
|
|
345
401
|
}
|
|
402
|
+
// register with suopervisor
|
|
403
|
+
await (0, supervisor_js_1.registerCrons)(this.cronRegistry);
|
|
404
|
+
await (0, supervisor_js_1.registerWebhooks)(this.webhookRegistry);
|
|
346
405
|
this.webhookServer = webhookApp.listen(port, () => {
|
|
347
406
|
this.log.info(`Express server listening on port ${port}`);
|
|
348
407
|
});
|
|
@@ -362,6 +421,7 @@ class MemoryInterpreter {
|
|
|
362
421
|
if (this.cronServer) {
|
|
363
422
|
this.cronServer.close();
|
|
364
423
|
}
|
|
424
|
+
this.otelSDK?.shutdown();
|
|
365
425
|
// Remove all signal listeners
|
|
366
426
|
for (const registration of this.registeredWorkflows) {
|
|
367
427
|
Deno.removeSignalListener('SIGINT', registration.sigintListener);
|
|
@@ -415,7 +475,7 @@ class MemoryInterpreter {
|
|
|
415
475
|
}
|
|
416
476
|
exports.MemoryInterpreter = MemoryInterpreter;
|
|
417
477
|
async function waitForReady(log) {
|
|
418
|
-
const readyCheckUrl = Deno.env.get(
|
|
478
|
+
const readyCheckUrl = Deno.env.get(constants_js_1.envReadyCheckURL);
|
|
419
479
|
if (!readyCheckUrl) {
|
|
420
480
|
return Promise.resolve();
|
|
421
481
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
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';
|
|
4
5
|
import { ContextImpl } from '../../context/Context.js';
|
|
5
6
|
import { ContextProvider } from '../../context/ContextProvider.js';
|
|
6
7
|
import { ConfigReader } from '../../dsl/http/types.js';
|
|
@@ -10,7 +11,6 @@ import { IssueAPI } from '../../issues/Issues.js';
|
|
|
10
11
|
import { Logger } from '../../observability/logging/Logger.js';
|
|
11
12
|
import { PlatformApi } from '../../services/platform/PlatformApi.js';
|
|
12
13
|
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,6 +23,11 @@ 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
|
+
}>;
|
|
26
31
|
organisationId: string;
|
|
27
32
|
};
|
|
28
33
|
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":"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"}
|
|
@@ -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;AAmFnE,eAAO,MAAM,aAAa,EAAE,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAGrE,CAAC"}
|
|
@@ -24,6 +24,7 @@ function compileCatch(compilerCtx, task) {
|
|
|
24
24
|
return compilerCtx.tracer.startActiveSpan(`catch`, (span) => {
|
|
25
25
|
span.setAttribute('execution.id', ctx.executionId);
|
|
26
26
|
span.setAttribute('task.type', 'catch');
|
|
27
|
+
span.setAttribute('type', 'task');
|
|
27
28
|
if (error instanceof Error) {
|
|
28
29
|
span.recordException(error);
|
|
29
30
|
span.setAttribute('error.message', error.message);
|
|
@@ -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;AAGtD,OAAO,EAA2B,YAAY,EAAE,MAAM,YAAY,CAAC;AA2CnE,eAAO,MAAM,UAAU,EAAE,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAG/D,CAAC"}
|
|
@@ -1,33 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/*
|
|
3
|
-
* Copyright (c) 2025 Versori Group Inc
|
|
4
|
-
*
|
|
5
|
-
* Use of this software is governed by the Business Source License 1.1
|
|
6
|
-
* included in the LICENSE file at the root of this repository.
|
|
7
|
-
*
|
|
8
|
-
* Change Date: 2029-01-01
|
|
9
|
-
* Change License: Apache License, Version 2.0
|
|
10
|
-
*
|
|
11
|
-
* As of the Change Date, in accordance with the Business Source License,
|
|
12
|
-
* use of this software will be governed by the Apache License, Version 2.0.
|
|
13
|
-
*/
|
|
14
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
3
|
exports.fnCompiler = void 0;
|
|
16
4
|
const rxjs_1 = require("rxjs");
|
|
17
5
|
const FnTask_js_1 = require("../../../dsl/tasks/FnTask.js");
|
|
6
|
+
const supervisor_js_1 = require("../../../internal/supervisor.js");
|
|
18
7
|
function compileFn(compilerCtx, task) {
|
|
19
8
|
return (src) => src.pipe((0, rxjs_1.tap)({
|
|
20
9
|
complete: () => compilerCtx.log.debug('fn.complete'),
|
|
21
10
|
}), (0, rxjs_1.mergeMap)(async (ctx) => {
|
|
22
11
|
return await compilerCtx.tracer.startActiveSpan(`fn-${task.id}`, async (span) => {
|
|
23
12
|
span.setAttribute('task.id', task.id);
|
|
13
|
+
span.setAttribute('type', 'task');
|
|
14
|
+
span.setAttribute('task.type', 'fn');
|
|
24
15
|
span.setAttribute('execution.id', ctx.executionId);
|
|
25
|
-
|
|
16
|
+
try {
|
|
17
|
+
let result;
|
|
18
|
+
const spanContext = span.spanContext();
|
|
19
|
+
const ctxWithLogger = ctx.withLogger(ctx.log.child({ spanId: spanContext.spanId, traceId: spanContext.traceId }));
|
|
20
|
+
if (typeof ctx.idx === 'number') {
|
|
21
|
+
result = ctx.withData(await task._fn(ctxWithLogger, ctx.idx));
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
result = ctx.withData(await task._fn(ctxWithLogger));
|
|
25
|
+
}
|
|
26
|
+
if (supervisor_js_1.enabled) {
|
|
27
|
+
span.setAttribute('response.body', JSON.stringify(result.data));
|
|
28
|
+
}
|
|
29
|
+
return result;
|
|
30
|
+
}
|
|
31
|
+
finally {
|
|
26
32
|
span.end();
|
|
27
|
-
return ctx.withData(await task._fn(ctx, ctx.idx));
|
|
28
33
|
}
|
|
29
|
-
span.end();
|
|
30
|
-
return ctx.withData(await task._fn(ctx));
|
|
31
34
|
});
|
|
32
35
|
}));
|
|
33
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../../../src/src/interpreter/memory/compilers/http.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../../../src/src/interpreter/memory/compilers/http.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAmB,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAG/E,OAAO,EAA2B,YAAY,EAAE,MAAM,YAAY,CAAC;AAuHnE,eAAO,MAAM,YAAY,EAAE,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAG5E,CAAC"}
|