@versori/run 0.0.1-alpha.7 → 0.1.0-alpha.8
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/context/Context.d.ts +6 -1
- package/esm/src/context/Context.d.ts.map +1 -1
- package/esm/src/context/Context.js +17 -3
- package/esm/src/context/ContextProvider.d.ts +3 -2
- package/esm/src/context/ContextProvider.d.ts.map +1 -1
- package/esm/src/context/ContextProvider.js +2 -2
- package/esm/src/dsl/http/default.d.ts.map +1 -1
- package/esm/src/dsl/http/default.js +3 -1
- package/esm/src/dsl/http/types.d.ts +122 -16
- package/esm/src/dsl/http/types.d.ts.map +1 -1
- package/esm/src/dsl/http/types.js +6 -2
- package/esm/src/dsl/http/versori/configloader.d.ts +2 -2
- package/esm/src/dsl/http/versori/configloader.d.ts.map +1 -1
- package/esm/src/dsl/http/versori/configloader.js +9 -3
- package/esm/src/dsl/http/versori/constants.d.ts +10 -0
- package/esm/src/dsl/http/versori/constants.d.ts.map +1 -0
- package/esm/src/dsl/http/versori/constants.js +12 -0
- package/esm/src/dsl/http/versori/internalauth.d.ts.map +1 -1
- package/esm/src/dsl/http/versori/internalauth.js +10 -9
- package/esm/src/dsl/http/versori/platformapi.d.ts +14 -0
- package/esm/src/dsl/http/versori/platformapi.d.ts.map +1 -0
- package/esm/src/dsl/http/versori/platformapi.js +91 -0
- package/esm/src/dsl/http/versori/roundtripper.d.ts +13 -6
- package/esm/src/dsl/http/versori/roundtripper.d.ts.map +1 -1
- package/esm/src/dsl/http/versori/roundtripper.js +171 -54
- package/esm/src/dsl/tasks/HttpTask.d.ts +18 -2
- package/esm/src/dsl/tasks/HttpTask.d.ts.map +1 -1
- package/esm/src/dsl/tasks/HttpTask.js +82 -0
- package/esm/src/dsl/triggers/ScheduleTrigger.d.ts +6 -2
- package/esm/src/dsl/triggers/ScheduleTrigger.d.ts.map +1 -1
- package/esm/src/dsl/triggers/ScheduleTrigger.js +10 -3
- package/esm/src/interpreter/memory/MemoryInterpreter.d.ts +1 -0
- package/esm/src/interpreter/memory/MemoryInterpreter.d.ts.map +1 -1
- package/esm/src/interpreter/memory/MemoryInterpreter.js +12 -3
- package/esm/src/interpreter/memory/ObservableCompiler.d.ts +2 -1
- package/esm/src/interpreter/memory/ObservableCompiler.d.ts.map +1 -1
- package/esm/src/interpreter/memory/compilers/background.d.ts.map +1 -1
- package/esm/src/interpreter/memory/compilers/background.js +4 -2
- package/esm/src/interpreter/memory/compilers/http.d.ts.map +1 -1
- package/esm/src/interpreter/memory/compilers/http.js +6 -12
- package/esm/src/interpreter/memory/compilers/schedule.d.ts.map +1 -1
- package/esm/src/interpreter/memory/compilers/schedule.js +32 -6
- package/esm/src/interpreter/memory/compilers/serial.js +1 -1
- package/esm/src/interpreter/memory/compilers/webhook.d.ts.map +1 -1
- package/esm/src/interpreter/memory/compilers/webhook.js +20 -4
- package/package.json +2 -1
- package/script/src/context/Context.d.ts +6 -1
- package/script/src/context/Context.d.ts.map +1 -1
- package/script/src/context/Context.js +17 -3
- package/script/src/context/ContextProvider.d.ts +3 -2
- package/script/src/context/ContextProvider.d.ts.map +1 -1
- package/script/src/context/ContextProvider.js +2 -2
- package/script/src/dsl/http/default.d.ts.map +1 -1
- package/script/src/dsl/http/default.js +3 -1
- package/script/src/dsl/http/types.d.ts +122 -16
- package/script/src/dsl/http/types.d.ts.map +1 -1
- package/script/src/dsl/http/types.js +7 -1
- package/script/src/dsl/http/versori/configloader.d.ts +2 -2
- package/script/src/dsl/http/versori/configloader.d.ts.map +1 -1
- package/script/src/dsl/http/versori/configloader.js +10 -4
- package/script/src/dsl/http/versori/constants.d.ts +10 -0
- package/script/src/dsl/http/versori/constants.d.ts.map +1 -0
- package/script/src/dsl/http/versori/constants.js +15 -0
- package/script/src/dsl/http/versori/internalauth.d.ts.map +1 -1
- package/script/src/dsl/http/versori/internalauth.js +10 -9
- package/script/src/dsl/http/versori/platformapi.d.ts +14 -0
- package/script/src/dsl/http/versori/platformapi.d.ts.map +1 -0
- package/script/src/dsl/http/versori/platformapi.js +118 -0
- package/script/src/dsl/http/versori/roundtripper.d.ts +13 -6
- package/script/src/dsl/http/versori/roundtripper.d.ts.map +1 -1
- package/script/src/dsl/http/versori/roundtripper.js +170 -54
- package/script/src/dsl/tasks/HttpTask.d.ts +18 -2
- package/script/src/dsl/tasks/HttpTask.d.ts.map +1 -1
- package/script/src/dsl/tasks/HttpTask.js +84 -1
- package/script/src/dsl/triggers/ScheduleTrigger.d.ts +6 -2
- package/script/src/dsl/triggers/ScheduleTrigger.d.ts.map +1 -1
- package/script/src/dsl/triggers/ScheduleTrigger.js +10 -3
- package/script/src/interpreter/memory/MemoryInterpreter.d.ts +1 -0
- package/script/src/interpreter/memory/MemoryInterpreter.d.ts.map +1 -1
- package/script/src/interpreter/memory/MemoryInterpreter.js +12 -3
- package/script/src/interpreter/memory/ObservableCompiler.d.ts +2 -1
- package/script/src/interpreter/memory/ObservableCompiler.d.ts.map +1 -1
- package/script/src/interpreter/memory/compilers/background.d.ts.map +1 -1
- package/script/src/interpreter/memory/compilers/background.js +3 -1
- package/script/src/interpreter/memory/compilers/http.d.ts.map +1 -1
- package/script/src/interpreter/memory/compilers/http.js +5 -11
- package/script/src/interpreter/memory/compilers/schedule.d.ts.map +1 -1
- package/script/src/interpreter/memory/compilers/schedule.js +32 -6
- package/script/src/interpreter/memory/compilers/serial.js +1 -1
- package/script/src/interpreter/memory/compilers/webhook.d.ts.map +1 -1
- package/script/src/interpreter/memory/compilers/webhook.js +20 -4
- package/esm/src/dsl/http/versori/connectapi.d.ts +0 -11
- package/esm/src/dsl/http/versori/connectapi.d.ts.map +0 -1
- package/esm/src/dsl/http/versori/connectapi.js +0 -57
- package/script/src/dsl/http/versori/connectapi.d.ts +0 -11
- package/script/src/dsl/http/versori/connectapi.d.ts.map +0 -1
- package/script/src/dsl/http/versori/connectapi.js +0 -61
|
@@ -1,28 +1,10 @@
|
|
|
1
1
|
import * as dntShim from "../../../../_dnt.shims.js";
|
|
2
|
-
import {
|
|
3
|
-
import { LoadConfigFromJSON } from './configloader.js';
|
|
2
|
+
import { LoadConfigFromFile } from './configloader.js';
|
|
4
3
|
import { VersoriCredentialClient } from './credentials/mod.js';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const serviceConnId = dntShim.Deno.env.get('RUN_CONNECTOR_ID');
|
|
10
|
-
if (!orgId || !serviceConnId || !connAPIBaseURL || !credsBaseURL) {
|
|
11
|
-
const missingVars = [];
|
|
12
|
-
if (!orgId)
|
|
13
|
-
missingVars.push('RUN_ORGANISATION_ID');
|
|
14
|
-
if (!serviceConnId)
|
|
15
|
-
missingVars.push('RUN_CONNECTOR_ID');
|
|
16
|
-
if (!connAPIBaseURL)
|
|
17
|
-
missingVars.push('RUN_CONNECT_API_INTERNAL_URL');
|
|
18
|
-
if (!credsBaseURL)
|
|
19
|
-
missingVars.push('RUN_CREDENTIALS_SERVICE_INTERNAL_URL');
|
|
20
|
-
throw new Error(`Missing environment variables: ${missingVars.join(', ')}`);
|
|
21
|
-
}
|
|
22
|
-
const cAPIClient = new ConnectAPIClient(connAPIBaseURL, orgId, serviceConnId, {});
|
|
23
|
-
const tokenClient = new VersoriCredentialClient(credsBaseURL);
|
|
24
|
-
return new VersoriRoundTripperFactory(cAPIClient, tokenClient);
|
|
25
|
-
}
|
|
4
|
+
import { LRUCache } from 'lru-cache';
|
|
5
|
+
import { PlatformAPIClient } from './platformapi.js';
|
|
6
|
+
import { ConsoleLogger } from '../../../observability/mod.js';
|
|
7
|
+
import { envVarCredsBaseURL, envVarEnvId, envVarOrgId, envVarPlatformApiBaseURL, } from './constants.js';
|
|
26
8
|
/**
|
|
27
9
|
* VersoriRoundTripper is an implementation of the RoundTripperFactory interface for Versori connections.
|
|
28
10
|
* This is the intended implementation for when projects/services are hosted on Versori infrastructure.
|
|
@@ -36,14 +18,14 @@ export function CreateFromEnv() {
|
|
|
36
18
|
* ```
|
|
37
19
|
*/
|
|
38
20
|
export class VersoriRoundTripperFactory {
|
|
39
|
-
constructor(
|
|
40
|
-
Object.defineProperty(this, "
|
|
21
|
+
constructor(credsClient, platformAPIClient, logger) {
|
|
22
|
+
Object.defineProperty(this, "tokenClient", {
|
|
41
23
|
enumerable: true,
|
|
42
24
|
configurable: true,
|
|
43
25
|
writable: true,
|
|
44
26
|
value: void 0
|
|
45
27
|
});
|
|
46
|
-
Object.defineProperty(this, "
|
|
28
|
+
Object.defineProperty(this, "platformAPIClient", {
|
|
47
29
|
enumerable: true,
|
|
48
30
|
configurable: true,
|
|
49
31
|
writable: true,
|
|
@@ -55,17 +37,99 @@ export class VersoriRoundTripperFactory {
|
|
|
55
37
|
writable: true,
|
|
56
38
|
value: void 0
|
|
57
39
|
});
|
|
58
|
-
this
|
|
40
|
+
Object.defineProperty(this, "log", {
|
|
41
|
+
enumerable: true,
|
|
42
|
+
configurable: true,
|
|
43
|
+
writable: true,
|
|
44
|
+
value: void 0
|
|
45
|
+
});
|
|
46
|
+
Object.defineProperty(this, "defaultStatic", {
|
|
47
|
+
enumerable: true,
|
|
48
|
+
configurable: true,
|
|
49
|
+
writable: true,
|
|
50
|
+
value: (msg, values) => {
|
|
51
|
+
return (input, init) => {
|
|
52
|
+
this.log.error(msg, values);
|
|
53
|
+
return globalThis.fetch(input, init);
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
Object.defineProperty(this, "defaultDynamic", {
|
|
58
|
+
enumerable: true,
|
|
59
|
+
configurable: true,
|
|
60
|
+
writable: true,
|
|
61
|
+
value: (msg, values) => {
|
|
62
|
+
return (userId, input, init) => {
|
|
63
|
+
values['userId'] = userId;
|
|
64
|
+
this.log.error(msg, values);
|
|
65
|
+
return globalThis.fetch(input, init);
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
});
|
|
59
69
|
this.tokenClient = credsClient;
|
|
60
|
-
this.
|
|
70
|
+
this.platformAPIClient = platformAPIClient;
|
|
71
|
+
this.versoriCfg = LoadConfigFromFile();
|
|
72
|
+
this.log = logger;
|
|
73
|
+
}
|
|
74
|
+
static fromEnv(logger) {
|
|
75
|
+
const credsBaseURL = dntShim.Deno.env.get(envVarCredsBaseURL);
|
|
76
|
+
const platformApiBaseURL = dntShim.Deno.env.get(envVarPlatformApiBaseURL);
|
|
77
|
+
const orgId = dntShim.Deno.env.get(envVarOrgId);
|
|
78
|
+
const envId = dntShim.Deno.env.get(envVarEnvId);
|
|
79
|
+
if (!orgId || !envId || !platformApiBaseURL || !credsBaseURL) {
|
|
80
|
+
const missingVars = [];
|
|
81
|
+
if (!orgId)
|
|
82
|
+
missingVars.push(envVarOrgId);
|
|
83
|
+
if (!envId)
|
|
84
|
+
missingVars.push(envVarEnvId);
|
|
85
|
+
if (!platformApiBaseURL)
|
|
86
|
+
missingVars.push(envVarPlatformApiBaseURL);
|
|
87
|
+
if (!credsBaseURL)
|
|
88
|
+
missingVars.push(envVarCredsBaseURL);
|
|
89
|
+
throw new Error(`Missing environment variables: ${missingVars.join(', ')}`);
|
|
90
|
+
}
|
|
91
|
+
const pAPIClient = new PlatformAPIClient(platformApiBaseURL, orgId, envId, {});
|
|
92
|
+
const tokenClient = new VersoriCredentialClient(credsBaseURL);
|
|
93
|
+
const log = logger || new ConsoleLogger('debug');
|
|
94
|
+
return new VersoriRoundTripperFactory(tokenClient, pAPIClient, log);
|
|
95
|
+
}
|
|
96
|
+
// takes the info and modifies the url using changeBaseUrl if necessary
|
|
97
|
+
changeRequestInit(info, conn) {
|
|
98
|
+
if (typeof info === 'string') {
|
|
99
|
+
return this.changeBaseUrl(info, conn);
|
|
100
|
+
}
|
|
101
|
+
else if (info instanceof URL) {
|
|
102
|
+
return this.changeBaseUrl(info.toString(), conn);
|
|
103
|
+
}
|
|
104
|
+
else if (info instanceof Request) {
|
|
105
|
+
const url = this.changeBaseUrl(info.url, conn);
|
|
106
|
+
return new Request(url, info);
|
|
107
|
+
}
|
|
108
|
+
return info;
|
|
61
109
|
}
|
|
62
|
-
|
|
110
|
+
changeBaseUrl(url, conn) {
|
|
111
|
+
const baseUrl = conn.baseUrl;
|
|
112
|
+
if (!baseUrl) {
|
|
113
|
+
return url;
|
|
114
|
+
}
|
|
115
|
+
const urlObj = new URL(url);
|
|
116
|
+
const baseUrlObj = new URL(baseUrl);
|
|
117
|
+
urlObj.hostname = baseUrlObj.hostname;
|
|
118
|
+
this.log.debug('Changing base URL', {
|
|
119
|
+
originalUrl: url,
|
|
120
|
+
newUrl: urlObj.toString(),
|
|
121
|
+
});
|
|
122
|
+
return url.toString();
|
|
123
|
+
}
|
|
124
|
+
async create(connName, fn = globalThis.fetch) {
|
|
63
125
|
const cnxId = this.getConnectionID(connName);
|
|
64
|
-
const conn = await this.
|
|
126
|
+
const conn = await this.platformAPIClient.getStaticConnection(cnxId);
|
|
65
127
|
if (!conn) {
|
|
66
|
-
|
|
128
|
+
return this.defaultStatic('Connection not found for static, using default fetch', {
|
|
129
|
+
connName: connName,
|
|
130
|
+
});
|
|
67
131
|
}
|
|
68
|
-
switch (conn.credentials
|
|
132
|
+
switch (conn.credentials[0].authSchemeConfig.type) {
|
|
69
133
|
case 'api-key':
|
|
70
134
|
return this.apiKeyFetcher(conn, fn);
|
|
71
135
|
case 'basic-auth':
|
|
@@ -78,55 +142,108 @@ export class VersoriRoundTripperFactory {
|
|
|
78
142
|
return fn;
|
|
79
143
|
}
|
|
80
144
|
}
|
|
81
|
-
async createDynamic(templateName, fn) {
|
|
82
|
-
|
|
145
|
+
async createDynamic(templateName, fn = globalThis.fetch) {
|
|
146
|
+
const lruCacheOptions = {
|
|
147
|
+
max: 100,
|
|
148
|
+
};
|
|
149
|
+
const cache = new LRUCache(lruCacheOptions);
|
|
150
|
+
const template = this.getTemplateID(templateName);
|
|
151
|
+
if (!template) {
|
|
152
|
+
return this.defaultDynamic('Template not found for dynamic, using default fetch', {
|
|
153
|
+
templateName: templateName,
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
const _fn = async (userId, input, init) => {
|
|
157
|
+
let conn = undefined;
|
|
158
|
+
if (cache.has(userId)) {
|
|
159
|
+
conn = cache.get(userId);
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
conn = await this.platformAPIClient.getEndUserConnection(template, userId);
|
|
163
|
+
if (conn) {
|
|
164
|
+
cache.set(userId, conn);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
if (!conn) {
|
|
168
|
+
return this.defaultDynamic('Connection not found for user, using default fetch', {
|
|
169
|
+
templateName: templateName,
|
|
170
|
+
userId: userId,
|
|
171
|
+
})(userId, input, init);
|
|
172
|
+
}
|
|
173
|
+
const _input = this.changeRequestInit(input, conn);
|
|
174
|
+
switch (conn.credentials[0].authSchemeConfig.type) {
|
|
175
|
+
case 'api-key':
|
|
176
|
+
return (await this.apiKeyFetcher(conn, fn))(_input, init);
|
|
177
|
+
case 'basic-auth':
|
|
178
|
+
return (await this.basicAuthFetcher(conn, fn))(_input, init);
|
|
179
|
+
case 'jwt-bearer':
|
|
180
|
+
return (await this.bearerTokenFetcher(conn, fn))(_input, init);
|
|
181
|
+
case 'oauth2':
|
|
182
|
+
return (await this.oauth2Fetcher(conn, fn))(_input, init);
|
|
183
|
+
default:
|
|
184
|
+
return fn(_input, init);
|
|
185
|
+
}
|
|
186
|
+
};
|
|
187
|
+
return _fn;
|
|
83
188
|
}
|
|
84
189
|
getConnectionID(connName) {
|
|
85
190
|
// Note that this is till very up in the air whether we are going to store the connection ID in the config
|
|
86
|
-
const conn = this.versoriCfg.
|
|
87
|
-
if (!conn) {
|
|
88
|
-
|
|
191
|
+
const conn = this.versoriCfg.mappings.find((c) => (c.dynamic === undefined || c.dynamic === false) && c.name === connName);
|
|
192
|
+
if (!conn || !conn.connId) {
|
|
193
|
+
return '';
|
|
89
194
|
}
|
|
90
|
-
return conn.
|
|
195
|
+
return conn.connId;
|
|
196
|
+
}
|
|
197
|
+
getTemplateID(templateName) {
|
|
198
|
+
// see above, also I'm assuming for now that the template id is simply the same as the connection id
|
|
199
|
+
// but there is another flag that denotes it as dynamic??
|
|
200
|
+
const template = this.versoriCfg.mappings.find((c) => c.dynamic && c.name === templateName);
|
|
201
|
+
if (!template || !template.templateId) {
|
|
202
|
+
return '';
|
|
203
|
+
}
|
|
204
|
+
return template.templateId;
|
|
91
205
|
}
|
|
92
206
|
async apiKeyFetcher(conn, fn) {
|
|
93
|
-
const tokenResponse = await this.tokenClient.getToken(conn.credentials
|
|
207
|
+
const tokenResponse = await this.tokenClient.getToken(conn.credentials[0].credential.id);
|
|
94
208
|
const token = tokenResponse.token?.accessToken;
|
|
209
|
+
const asc = conn.credentials[0].authSchemeConfig.apiKey;
|
|
95
210
|
if (!token) {
|
|
96
211
|
throw new Error('Token not found');
|
|
97
212
|
}
|
|
213
|
+
if (!asc) {
|
|
214
|
+
throw new Error('API Key configuration not found');
|
|
215
|
+
}
|
|
98
216
|
const _fn = (input, init) => {
|
|
99
217
|
if (!init) {
|
|
100
218
|
init = {};
|
|
101
219
|
}
|
|
102
|
-
|
|
103
|
-
switch (conn.credentials.action[0].authSchemeConfig.in) {
|
|
220
|
+
switch (asc.in) {
|
|
104
221
|
case 'header':
|
|
105
222
|
if (!init.headers) {
|
|
106
223
|
init.headers = new Headers();
|
|
107
224
|
}
|
|
108
225
|
if (init.headers instanceof Headers) {
|
|
109
|
-
init.headers.set(
|
|
226
|
+
init.headers.set(asc.name, token);
|
|
110
227
|
}
|
|
111
228
|
else if (init.headers instanceof Array) {
|
|
112
|
-
init.headers.push([
|
|
229
|
+
init.headers.push([asc.name, token]);
|
|
113
230
|
}
|
|
114
231
|
else {
|
|
115
232
|
init.headers = {
|
|
116
233
|
...init.headers,
|
|
117
|
-
[
|
|
234
|
+
[asc.name]: token,
|
|
118
235
|
};
|
|
119
236
|
}
|
|
120
237
|
break;
|
|
121
238
|
case 'query':
|
|
122
239
|
if (typeof input === 'string') {
|
|
123
|
-
input += `?${
|
|
240
|
+
input += `?${asc.name}=${token}`;
|
|
124
241
|
}
|
|
125
242
|
else if (input instanceof Request) {
|
|
126
|
-
input = new Request(input.url + `?${
|
|
243
|
+
input = new Request(input.url + `?${asc.name}=${token}`, init);
|
|
127
244
|
}
|
|
128
245
|
else if (input instanceof URL) {
|
|
129
|
-
input.searchParams.append(
|
|
246
|
+
input.searchParams.append(asc.name, token);
|
|
130
247
|
}
|
|
131
248
|
break;
|
|
132
249
|
}
|
|
@@ -135,7 +252,7 @@ export class VersoriRoundTripperFactory {
|
|
|
135
252
|
return _fn;
|
|
136
253
|
}
|
|
137
254
|
async basicAuthFetcher(conn, fn) {
|
|
138
|
-
const tokenResponse = await this.tokenClient.getToken(conn.credentials
|
|
255
|
+
const tokenResponse = await this.tokenClient.getToken(conn.credentials[0].credential.id);
|
|
139
256
|
const token = tokenResponse.token?.accessToken;
|
|
140
257
|
if (!token) {
|
|
141
258
|
throw new Error('Token not found');
|
|
@@ -147,14 +264,14 @@ export class VersoriRoundTripperFactory {
|
|
|
147
264
|
if (!init.headers) {
|
|
148
265
|
init.headers = new Headers();
|
|
149
266
|
}
|
|
150
|
-
init.headers.set('Authorization', token);
|
|
267
|
+
init.headers.set('Authorization', `Basic ${token}`);
|
|
151
268
|
return fn(input, init);
|
|
152
269
|
};
|
|
153
270
|
return _fn;
|
|
154
271
|
}
|
|
155
|
-
// TODO: need to make the prefix and header name
|
|
272
|
+
// TODO: need to make the prefix and header name configurable from authschemeconfig
|
|
156
273
|
async bearerTokenFetcher(conn, fn) {
|
|
157
|
-
const tokenResponse = await this.tokenClient.getToken(conn.credentials
|
|
274
|
+
const tokenResponse = await this.tokenClient.getToken(conn.credentials[0].credential.id);
|
|
158
275
|
const token = tokenResponse.token?.accessToken;
|
|
159
276
|
if (!token) {
|
|
160
277
|
throw new Error('Token not found');
|
|
@@ -175,7 +292,7 @@ export class VersoriRoundTripperFactory {
|
|
|
175
292
|
else {
|
|
176
293
|
init.headers = {
|
|
177
294
|
...init.headers,
|
|
178
|
-
['Authorization']: `Bearer ${token}
|
|
295
|
+
['Authorization']: `Bearer ${token}`,
|
|
179
296
|
};
|
|
180
297
|
}
|
|
181
298
|
return fn(input, init);
|
|
@@ -183,7 +300,7 @@ export class VersoriRoundTripperFactory {
|
|
|
183
300
|
return _fn;
|
|
184
301
|
}
|
|
185
302
|
async oauth2Fetcher(conn, fn) {
|
|
186
|
-
const tokenResponse = await this.tokenClient.getOAuth2Token(conn.credentials
|
|
303
|
+
const tokenResponse = await this.tokenClient.getOAuth2Token(conn.credentials[0].credential.id);
|
|
187
304
|
const token = tokenResponse.token?.accessToken;
|
|
188
305
|
const tokenType = tokenResponse.token?.tokenType;
|
|
189
306
|
if (!token) {
|
|
@@ -218,7 +335,7 @@ export class VersoriRoundTripperFactory {
|
|
|
218
335
|
else {
|
|
219
336
|
init.headers = {
|
|
220
337
|
...init.headers,
|
|
221
|
-
['Authorization']: `${_tokenType()} ${token}
|
|
338
|
+
['Authorization']: `${_tokenType()} ${token}`,
|
|
222
339
|
};
|
|
223
340
|
}
|
|
224
341
|
return fn(input, init);
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { Context } from '../../context/Context.js';
|
|
2
|
+
import { Logger } from '../../mod.js';
|
|
3
|
+
import { Activation, DynamicFetcher } from '../http/types.js';
|
|
2
4
|
import { ArrayTask, Task, Taskable, TaskType } from '../Task.js';
|
|
3
|
-
export
|
|
5
|
+
export interface HttpContext<Data, PageParams = undefined> extends Context<Data> {
|
|
4
6
|
fetch: typeof fetch;
|
|
5
7
|
connectionVariables: Record<string, any>;
|
|
6
8
|
pageParams?: PageParams;
|
|
7
9
|
nextPage: (nextParams: PageParams) => Promise<void>;
|
|
8
|
-
}
|
|
10
|
+
}
|
|
9
11
|
export type HttpContextFunc<In, Out, PageParams> = (ctx: HttpContext<In, PageParams>) => Promise<Out>;
|
|
10
12
|
export type PaginateOptions<P> = {
|
|
11
13
|
initialParams: P;
|
|
@@ -27,5 +29,19 @@ export declare class HttpTaskImpl<In, Out, PageParams> implements Task<In, Out>
|
|
|
27
29
|
unpack<NextOut>(mapper: (data: Out) => NextOut[]): ArrayTask<In, NextOut>;
|
|
28
30
|
clone(): Task<In, Out>;
|
|
29
31
|
}
|
|
32
|
+
export declare class HttpContextImpl<D, PageParams> implements HttpContext<D, PageParams> {
|
|
33
|
+
log: Logger;
|
|
34
|
+
startTime: Date;
|
|
35
|
+
executionId: string;
|
|
36
|
+
activation?: Activation;
|
|
37
|
+
data: D;
|
|
38
|
+
connectionVariables: Record<string, any>;
|
|
39
|
+
pageParams?: PageParams;
|
|
40
|
+
private dynamicFetcher?;
|
|
41
|
+
private staticFetcher;
|
|
42
|
+
constructor(ctx: Context<D>, connectionVars: Record<string, any>, staticFetcher: typeof fetch, dynamicFetcher?: DynamicFetcher, pageParams?: PageParams);
|
|
43
|
+
get fetch(): typeof globalThis.fetch;
|
|
44
|
+
nextPage(nextParams: PageParams): Promise<void>;
|
|
45
|
+
}
|
|
30
46
|
export declare function http<In = any, Out = any, PageParams = unknown>(taskId: string, opts: HttpOptions<In, Out, PageParams>, fn: HttpContextFunc<In, Out, PageParams>): Task<In, Out>;
|
|
31
47
|
//# sourceMappingURL=HttpTask.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpTask.d.ts","sourceRoot":"","sources":["../../../../src/src/dsl/tasks/HttpTask.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"HttpTask.d.ts","sourceRoot":"","sources":["../../../../src/src/dsl/tasks/HttpTask.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
var _a;
|
|
2
2
|
import { ensureTask } from '../ensureTask.js';
|
|
3
|
+
import { wrapDynamicFetcher } from '../http/types.js';
|
|
3
4
|
import { TaskType } from '../Task.js';
|
|
4
5
|
import { BackgroundTask } from './BackgroundTask.js';
|
|
5
6
|
import { CatchTask } from './CatchTask.js';
|
|
@@ -55,6 +56,87 @@ export class HttpTaskImpl {
|
|
|
55
56
|
}
|
|
56
57
|
}
|
|
57
58
|
_a = TaskType;
|
|
59
|
+
export class HttpContextImpl {
|
|
60
|
+
constructor(ctx, connectionVars, staticFetcher, dynamicFetcher, pageParams) {
|
|
61
|
+
Object.defineProperty(this, "log", {
|
|
62
|
+
enumerable: true,
|
|
63
|
+
configurable: true,
|
|
64
|
+
writable: true,
|
|
65
|
+
value: void 0
|
|
66
|
+
});
|
|
67
|
+
Object.defineProperty(this, "startTime", {
|
|
68
|
+
enumerable: true,
|
|
69
|
+
configurable: true,
|
|
70
|
+
writable: true,
|
|
71
|
+
value: void 0
|
|
72
|
+
});
|
|
73
|
+
Object.defineProperty(this, "executionId", {
|
|
74
|
+
enumerable: true,
|
|
75
|
+
configurable: true,
|
|
76
|
+
writable: true,
|
|
77
|
+
value: void 0
|
|
78
|
+
});
|
|
79
|
+
Object.defineProperty(this, "activation", {
|
|
80
|
+
enumerable: true,
|
|
81
|
+
configurable: true,
|
|
82
|
+
writable: true,
|
|
83
|
+
value: void 0
|
|
84
|
+
});
|
|
85
|
+
Object.defineProperty(this, "data", {
|
|
86
|
+
enumerable: true,
|
|
87
|
+
configurable: true,
|
|
88
|
+
writable: true,
|
|
89
|
+
value: void 0
|
|
90
|
+
});
|
|
91
|
+
Object.defineProperty(this, "connectionVariables", {
|
|
92
|
+
enumerable: true,
|
|
93
|
+
configurable: true,
|
|
94
|
+
writable: true,
|
|
95
|
+
value: {}
|
|
96
|
+
});
|
|
97
|
+
Object.defineProperty(this, "pageParams", {
|
|
98
|
+
enumerable: true,
|
|
99
|
+
configurable: true,
|
|
100
|
+
writable: true,
|
|
101
|
+
value: void 0
|
|
102
|
+
}); // TODO: Implement page params
|
|
103
|
+
Object.defineProperty(this, "dynamicFetcher", {
|
|
104
|
+
enumerable: true,
|
|
105
|
+
configurable: true,
|
|
106
|
+
writable: true,
|
|
107
|
+
value: void 0
|
|
108
|
+
});
|
|
109
|
+
Object.defineProperty(this, "staticFetcher", {
|
|
110
|
+
enumerable: true,
|
|
111
|
+
configurable: true,
|
|
112
|
+
writable: true,
|
|
113
|
+
value: void 0
|
|
114
|
+
});
|
|
115
|
+
this.log = ctx.log;
|
|
116
|
+
this.executionId = ctx.executionId;
|
|
117
|
+
this.startTime = ctx.startTime;
|
|
118
|
+
this.activation = ctx.activation;
|
|
119
|
+
this.data = ctx.data;
|
|
120
|
+
this.pageParams = pageParams;
|
|
121
|
+
this.connectionVariables = connectionVars;
|
|
122
|
+
this.dynamicFetcher = dynamicFetcher;
|
|
123
|
+
this.staticFetcher = staticFetcher;
|
|
124
|
+
}
|
|
125
|
+
get fetch() {
|
|
126
|
+
// TODO: this will need some work to make dynamic and static connections work in tandem.
|
|
127
|
+
let fetch;
|
|
128
|
+
if (this.dynamicFetcher && this.activation) {
|
|
129
|
+
fetch = wrapDynamicFetcher(this.dynamicFetcher, this.activation.id);
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
fetch = this.staticFetcher;
|
|
133
|
+
}
|
|
134
|
+
return fetch;
|
|
135
|
+
}
|
|
136
|
+
async nextPage(nextParams) {
|
|
137
|
+
throw new Error("Method not implemented.");
|
|
138
|
+
}
|
|
139
|
+
}
|
|
58
140
|
export function http(taskId, opts, fn) {
|
|
59
141
|
return new HttpTaskImpl(taskId, opts, fn);
|
|
60
142
|
}
|
|
@@ -1,14 +1,18 @@
|
|
|
1
|
+
import { Activation } from '../http/types.js';
|
|
1
2
|
import { Taskable } from '../Task.js';
|
|
2
3
|
import { Trigger, TriggerType } from '../Trigger.js';
|
|
3
4
|
import { Workflow } from '../Workflow.js';
|
|
4
5
|
export type ScheduleData = Record<string, never>;
|
|
6
|
+
export type PrebuiltPredicate = 'all';
|
|
7
|
+
export type ActivationPredicate = PrebuiltPredicate | ((a?: Activation) => boolean);
|
|
5
8
|
export declare class ScheduleTrigger implements Trigger<ScheduleData> {
|
|
6
9
|
id: string;
|
|
7
10
|
[TriggerType]: string;
|
|
8
11
|
schedule: string;
|
|
9
|
-
|
|
12
|
+
activationPredicate?: ActivationPredicate;
|
|
13
|
+
constructor(id: string, schedule: string, activationPredicate?: ActivationPredicate);
|
|
10
14
|
then<OO>(task: Taskable<ScheduleData, OO>): Workflow<OO>;
|
|
11
15
|
catch<OO>(error: any): Workflow<OO>;
|
|
12
16
|
}
|
|
13
|
-
export declare function schedule(id: string, schedule: string): Workflow<ScheduleData>;
|
|
17
|
+
export declare function schedule(id: string, schedule: string, activationPredicate?: ActivationPredicate): Workflow<ScheduleData>;
|
|
14
18
|
//# sourceMappingURL=ScheduleTrigger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScheduleTrigger.d.ts","sourceRoot":"","sources":["../../../../src/src/dsl/triggers/ScheduleTrigger.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAgB,MAAM,gBAAgB,CAAC;AAExD,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAEjD,qBAAa,eAAgB,YAAW,OAAO,CAAC,YAAY,CAAC;IACzD,EAAE,EAAE,MAAM,CAAC;IAEX,CAAC,WAAW,CAAC,EAAE,MAAM,CAAc;IAEnC,QAAQ,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"ScheduleTrigger.d.ts","sourceRoot":"","sources":["../../../../src/src/dsl/triggers/ScheduleTrigger.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAgB,MAAM,gBAAgB,CAAC;AAExD,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAEjD,MAAM,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAEtC,MAAM,MAAM,mBAAmB,GAAG,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,KAAK,OAAO,CAAC,CAAC;AAEpF,qBAAa,eAAgB,YAAW,OAAO,CAAC,YAAY,CAAC;IACzD,EAAE,EAAE,MAAM,CAAC;IAEX,CAAC,WAAW,CAAC,EAAE,MAAM,CAAc;IAEnC,QAAQ,EAAE,MAAM,CAAC;IAEjB,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;gBAE9B,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,mBAAmB,CAAC,EAAE,mBAAmB;IAMnF,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,YAAY,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC;IAIxD,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,QAAQ,CAAC,EAAE,CAAC;CAGtC;AAED,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,mBAAmB,CAAC,EAAE,mBAAmB,GAAG,QAAQ,CAAC,YAAY,CAAC,CAExH"}
|
|
@@ -3,7 +3,7 @@ import { ensureTask } from "../ensureTask.js";
|
|
|
3
3
|
import { TriggerType } from '../Trigger.js';
|
|
4
4
|
import { WorkflowImpl } from '../Workflow.js';
|
|
5
5
|
export class ScheduleTrigger {
|
|
6
|
-
constructor(id, schedule) {
|
|
6
|
+
constructor(id, schedule, activationPredicate) {
|
|
7
7
|
Object.defineProperty(this, "id", {
|
|
8
8
|
enumerable: true,
|
|
9
9
|
configurable: true,
|
|
@@ -22,8 +22,15 @@ export class ScheduleTrigger {
|
|
|
22
22
|
writable: true,
|
|
23
23
|
value: void 0
|
|
24
24
|
});
|
|
25
|
+
Object.defineProperty(this, "activationPredicate", {
|
|
26
|
+
enumerable: true,
|
|
27
|
+
configurable: true,
|
|
28
|
+
writable: true,
|
|
29
|
+
value: void 0
|
|
30
|
+
});
|
|
25
31
|
this.id = id;
|
|
26
32
|
this.schedule = schedule;
|
|
33
|
+
this.activationPredicate = activationPredicate;
|
|
27
34
|
}
|
|
28
35
|
then(task) {
|
|
29
36
|
return new WorkflowImpl(this, ensureTask(task));
|
|
@@ -33,6 +40,6 @@ export class ScheduleTrigger {
|
|
|
33
40
|
}
|
|
34
41
|
}
|
|
35
42
|
_a = TriggerType;
|
|
36
|
-
export function schedule(id, schedule) {
|
|
37
|
-
return new ScheduleTrigger(id, schedule);
|
|
43
|
+
export function schedule(id, schedule, activationPredicate) {
|
|
44
|
+
return new ScheduleTrigger(id, schedule, activationPredicate);
|
|
38
45
|
}
|
|
@@ -15,6 +15,7 @@ export declare class MemoryInterpreter {
|
|
|
15
15
|
private contextProvider;
|
|
16
16
|
private roundTripperFactory;
|
|
17
17
|
private router;
|
|
18
|
+
private connectionProvider;
|
|
18
19
|
private registeredWorkflows;
|
|
19
20
|
constructor(options?: MemoryInterpreterOptions);
|
|
20
21
|
register<O>(workflow: Workflow<O>, options?: MemoryInterpreterOptions): {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryInterpreter.d.ts","sourceRoot":"","sources":["../../../../src/src/interpreter/memory/MemoryInterpreter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAuB,MAAM,kCAAkC,CAAC;AACxF,OAAO,EAAE,QAAQ,EAAgB,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAC/D,OAAO,EAAmB,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"MemoryInterpreter.d.ts","sourceRoot":"","sources":["../../../../src/src/interpreter/memory/MemoryInterpreter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAuB,MAAM,kCAAkC,CAAC;AACxF,OAAO,EAAE,QAAQ,EAAgB,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAC/D,OAAO,EAAmB,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAQ9E,MAAM,MAAM,wBAAwB,GAAG;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,sBAAsB,CAAC,EAAE,OAAO,CAAC;CACpC,CAAC;AAEF,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,mBAAmB,CAAsB;IACjD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,kBAAkB,CAAqB;IAE/C,OAAO,CAAC,mBAAmB,CAKnB;gBAEI,OAAO,GAAE,wBAA6B;IASlD,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,wBAAwB;kBAE3C,GAAG;eACN,GAAG;;;;IAuCpB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAwD/B"}
|
|
@@ -5,8 +5,9 @@ import { WorkflowImpl } from '../../dsl/Workflow.js';
|
|
|
5
5
|
import { ObservableCompiler } from './ObservableCompiler.js';
|
|
6
6
|
import { ConsoleLogger } from '../../observability/logging/ConsoleLogger.js';
|
|
7
7
|
import { DefaultRoundTripperFactory } from '../../dsl/http/default.js';
|
|
8
|
-
import { CreateFromEnv } from '../../dsl/http/versori/roundtripper.js';
|
|
9
8
|
import express from 'express';
|
|
9
|
+
import { PlatformAPIClient } from '../../dsl/http/versori/platformapi.js';
|
|
10
|
+
import { VersoriRoundTripperFactory } from '../../dsl/http/versori/roundtripper.js';
|
|
10
11
|
export class MemoryInterpreter {
|
|
11
12
|
constructor(options = {}) {
|
|
12
13
|
Object.defineProperty(this, "log", {
|
|
@@ -39,6 +40,12 @@ export class MemoryInterpreter {
|
|
|
39
40
|
writable: true,
|
|
40
41
|
value: void 0
|
|
41
42
|
});
|
|
43
|
+
Object.defineProperty(this, "connectionProvider", {
|
|
44
|
+
enumerable: true,
|
|
45
|
+
configurable: true,
|
|
46
|
+
writable: true,
|
|
47
|
+
value: void 0
|
|
48
|
+
});
|
|
42
49
|
Object.defineProperty(this, "registeredWorkflows", {
|
|
43
50
|
enumerable: true,
|
|
44
51
|
configurable: true,
|
|
@@ -48,8 +55,9 @@ export class MemoryInterpreter {
|
|
|
48
55
|
this.log = options.logger || new ConsoleLogger('debug');
|
|
49
56
|
this.compiler = options.compiler || new ObservableCompiler();
|
|
50
57
|
this.contextProvider = options.contextProvider || new ContextProviderImpl(this.log);
|
|
51
|
-
this.roundTripperFactory = options.skipVersoriCredentials ? new DefaultRoundTripperFactory() :
|
|
58
|
+
this.roundTripperFactory = options.skipVersoriCredentials ? new DefaultRoundTripperFactory() : VersoriRoundTripperFactory.fromEnv(this.log);
|
|
52
59
|
this.router = express.Router();
|
|
60
|
+
this.connectionProvider = PlatformAPIClient.fromEnv();
|
|
53
61
|
}
|
|
54
62
|
register(workflow, options) {
|
|
55
63
|
const registration = {
|
|
@@ -73,7 +81,8 @@ export class MemoryInterpreter {
|
|
|
73
81
|
log: this.log,
|
|
74
82
|
contextProvider: this.contextProvider,
|
|
75
83
|
roundTripperFactory: this.roundTripperFactory,
|
|
76
|
-
router: this.router
|
|
84
|
+
router: this.router,
|
|
85
|
+
connectionProvider: this.connectionProvider
|
|
77
86
|
};
|
|
78
87
|
registration.trigger$ = this.compiler.compileTrigger(compilerContext, workflow.trigger, combinedSignal);
|
|
79
88
|
registration.task$ = this.compiler.compileTask(compilerContext, workflow.task);
|
|
@@ -5,13 +5,14 @@ import { ContextOperatorFunction, TaskCompiler, TriggerCompiler } from './compil
|
|
|
5
5
|
import { Trigger } from '../../dsl/Trigger.js';
|
|
6
6
|
import { ContextProvider } from '../../context/ContextProvider.js';
|
|
7
7
|
import { ContextImpl } from '../../context/Context.js';
|
|
8
|
-
import { RoundTripperFactory } from '../../dsl/http/types.js';
|
|
8
|
+
import { ConnectionProvider, RoundTripperFactory } from '../../dsl/http/types.js';
|
|
9
9
|
import { Router } from 'express';
|
|
10
10
|
export type CompilerContext = {
|
|
11
11
|
compiler: ObservableCompiler;
|
|
12
12
|
log: Logger;
|
|
13
13
|
contextProvider: ContextProvider;
|
|
14
14
|
roundTripperFactory: RoundTripperFactory;
|
|
15
|
+
connectionProvider: ConnectionProvider;
|
|
15
16
|
router: Router;
|
|
16
17
|
};
|
|
17
18
|
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,UAAU,EAAE,gBAAgB,EAAE,MAAM,MAAM,CAAC;AACpD,OAAO,EAAE,IAAI,EAAY,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAO/D,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE9F,OAAO,EAAE,OAAO,EAAe,MAAM,sBAAsB,CAAC;AAG5D,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"ObservableCompiler.d.ts","sourceRoot":"","sources":["../../../../src/src/interpreter/memory/ObservableCompiler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,MAAM,CAAC;AACpD,OAAO,EAAE,IAAI,EAAY,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAO/D,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE9F,OAAO,EAAE,OAAO,EAAe,MAAM,sBAAsB,CAAC;AAG5D,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,MAAM,MAAM,eAAe,GAAG;IAC1B,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,eAAe,EAAE,eAAe,CAAC;IACjC,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,MAAM,EAAE,MAAM,CAAC;CAClB,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":"background.d.ts","sourceRoot":"","sources":["../../../../../src/src/interpreter/memory/compilers/background.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAEtE,OAAO,EAA2B,YAAY,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"background.d.ts","sourceRoot":"","sources":["../../../../../src/src/interpreter/memory/compilers/background.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAEtE,OAAO,EAA2B,YAAY,EAAE,MAAM,YAAY,CAAC;AA0CnE,eAAO,MAAM,kBAAkB,EAAE,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAG/E,CAAC"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import { asyncScheduler, catchError, connect, EMPTY, ignoreElements, map, merge, mergeMap, of, subscribeOn, tap } from 'rxjs';
|
|
1
|
+
import { asyncScheduler, catchError, connect, EMPTY, ignoreElements, map, merge, mergeMap, of, subscribeOn, tap, } from 'rxjs';
|
|
2
2
|
import { BackgroundTask } from '../../../dsl/tasks/BackgroundTask.js';
|
|
3
3
|
function compileBackground(ctx, task) {
|
|
4
4
|
const base = ctx.compiler.compileTask(ctx, task._base);
|
|
5
5
|
return (src) => src.pipe(connect((shared$) => merge(shared$.pipe(mergeMap((ctx) => base(of(ctx)).pipe(subscribeOn(asyncScheduler), tap({
|
|
6
|
-
next: (ctx) => ctx.log.debug('Background task emitted a value', {
|
|
6
|
+
next: (ctx) => ctx.log.debug('Background task emitted a value', {
|
|
7
|
+
data: ctx.data,
|
|
8
|
+
}),
|
|
7
9
|
complete: () => ctx.log.debug('Background task completed'),
|
|
8
10
|
}), catchError((error) => {
|
|
9
11
|
ctx.log.error('Error in background task', {
|