@dxos/functions 0.5.3-main.bbd33a9 → 0.5.3-main.bfb5bca
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/browser/{chunk-P3HPDHNI.mjs → chunk-4D4I3YMJ.mjs} +4 -4
- package/dist/lib/browser/{chunk-P3HPDHNI.mjs.map → chunk-4D4I3YMJ.mjs.map} +3 -3
- package/dist/lib/browser/index.mjs +145 -108
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/types.mjs +1 -1
- package/dist/lib/node/{chunk-KTLM3JNV.cjs → chunk-3UYUR5N5.cjs} +7 -7
- package/dist/lib/node/{chunk-KTLM3JNV.cjs.map → chunk-3UYUR5N5.cjs.map} +3 -3
- package/dist/lib/node/index.cjs +156 -119
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/types.cjs +5 -5
- package/dist/lib/node/types.cjs.map +1 -1
- package/dist/types/src/runtime/dev-server.d.ts.map +1 -1
- package/dist/types/src/testing/setup.d.ts.map +1 -1
- package/dist/types/src/trigger/trigger-registry.d.ts +2 -5
- package/dist/types/src/trigger/trigger-registry.d.ts.map +1 -1
- package/dist/types/src/trigger/type/subscription-trigger.d.ts.map +1 -1
- package/dist/types/src/trigger/type/timer-trigger.d.ts.map +1 -1
- package/dist/types/src/trigger/type/webhook-trigger.d.ts.map +1 -1
- package/dist/types/src/trigger/type/websocket-trigger.d.ts.map +1 -1
- package/dist/types/src/types.d.ts +15 -3
- package/dist/types/src/types.d.ts.map +1 -1
- package/package.json +14 -14
- package/schema/functions.json +5 -0
- package/src/runtime/dev-server.ts +3 -3
- package/src/runtime/scheduler.test.ts +14 -9
- package/src/runtime/scheduler.ts +7 -7
- package/src/testing/functions-integration.test.ts +1 -0
- package/src/testing/setup.ts +8 -10
- package/src/trigger/trigger-registry.test.ts +30 -13
- package/src/trigger/trigger-registry.ts +49 -39
- package/src/trigger/type/subscription-trigger.ts +13 -7
- package/src/trigger/type/timer-trigger.ts +4 -3
- package/src/trigger/type/webhook-trigger.ts +3 -2
- package/src/trigger/type/websocket-trigger.ts +4 -3
- package/src/types.ts +6 -3
package/dist/lib/node/index.cjs
CHANGED
|
@@ -29,17 +29,17 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
29
29
|
var node_exports = {};
|
|
30
30
|
__export(node_exports, {
|
|
31
31
|
DevServer: () => DevServer,
|
|
32
|
-
FUNCTION_SCHEMA: () =>
|
|
33
|
-
FunctionDef: () =>
|
|
34
|
-
FunctionManifestSchema: () =>
|
|
32
|
+
FUNCTION_SCHEMA: () => import_chunk_3UYUR5N5.FUNCTION_SCHEMA,
|
|
33
|
+
FunctionDef: () => import_chunk_3UYUR5N5.FunctionDef,
|
|
34
|
+
FunctionManifestSchema: () => import_chunk_3UYUR5N5.FunctionManifestSchema,
|
|
35
35
|
FunctionRegistry: () => FunctionRegistry,
|
|
36
|
-
FunctionTrigger: () =>
|
|
36
|
+
FunctionTrigger: () => import_chunk_3UYUR5N5.FunctionTrigger,
|
|
37
37
|
Scheduler: () => Scheduler,
|
|
38
38
|
TriggerRegistry: () => TriggerRegistry,
|
|
39
39
|
subscriptionHandler: () => subscriptionHandler
|
|
40
40
|
});
|
|
41
41
|
module.exports = __toCommonJS(node_exports);
|
|
42
|
-
var
|
|
42
|
+
var import_chunk_3UYUR5N5 = require("./chunk-3UYUR5N5.cjs");
|
|
43
43
|
var import_async = require("@dxos/async");
|
|
44
44
|
var import_echo = require("@dxos/client/echo");
|
|
45
45
|
var import_context = require("@dxos/context");
|
|
@@ -70,6 +70,7 @@ var import_log5 = require("@dxos/log");
|
|
|
70
70
|
var import_util3 = require("@dxos/util");
|
|
71
71
|
var import_types = require("@braneframe/types");
|
|
72
72
|
var import_async5 = require("@dxos/async");
|
|
73
|
+
var import_echo3 = require("@dxos/client/echo");
|
|
73
74
|
var import_echo_db = require("@dxos/echo-db");
|
|
74
75
|
var import_log6 = require("@dxos/log");
|
|
75
76
|
var import_cron = require("cron");
|
|
@@ -109,12 +110,12 @@ var FunctionRegistry = class extends import_context.Resource {
|
|
|
109
110
|
if (!functions?.length) {
|
|
110
111
|
return;
|
|
111
112
|
}
|
|
112
|
-
if (!space.db.graph.runtimeSchemaRegistry.hasSchema(
|
|
113
|
-
space.db.graph.runtimeSchemaRegistry.registerSchema(
|
|
113
|
+
if (!space.db.graph.runtimeSchemaRegistry.hasSchema(import_chunk_3UYUR5N5.FunctionDef)) {
|
|
114
|
+
space.db.graph.runtimeSchemaRegistry.registerSchema(import_chunk_3UYUR5N5.FunctionDef);
|
|
114
115
|
}
|
|
115
|
-
const { objects: existing } = await space.db.query(import_echo.Filter.schema(
|
|
116
|
+
const { objects: existing } = await space.db.query(import_echo.Filter.schema(import_chunk_3UYUR5N5.FunctionDef)).run();
|
|
116
117
|
const { added } = (0, import_util.diff)(existing, functions, (a, b) => a.uri === b.uri);
|
|
117
|
-
added.forEach((def) => space.db.add((0, import_echo.create)(
|
|
118
|
+
added.forEach((def) => space.db.add((0, import_echo.create)(import_chunk_3UYUR5N5.FunctionDef, def)));
|
|
118
119
|
}
|
|
119
120
|
async _open() {
|
|
120
121
|
import_log.log.info("opening...", void 0, {
|
|
@@ -134,7 +135,7 @@ var FunctionRegistry = class extends import_context.Resource {
|
|
|
134
135
|
if (this._ctx.disposed) {
|
|
135
136
|
break;
|
|
136
137
|
}
|
|
137
|
-
this._ctx.onDispose(space.db.query(import_echo.Filter.schema(
|
|
138
|
+
this._ctx.onDispose(space.db.query(import_echo.Filter.schema(import_chunk_3UYUR5N5.FunctionDef)).subscribe(({ objects }) => {
|
|
138
139
|
const { added } = (0, import_util.diff)(registered, objects, (a, b) => a.uri === b.uri);
|
|
139
140
|
if (added.length > 0) {
|
|
140
141
|
registered.push(...added);
|
|
@@ -214,7 +215,7 @@ var DevServer = class {
|
|
|
214
215
|
added
|
|
215
216
|
}, {
|
|
216
217
|
F: __dxlog_file3,
|
|
217
|
-
L:
|
|
218
|
+
L: 53,
|
|
218
219
|
S: this,
|
|
219
220
|
C: (f, a) => f(...a)
|
|
220
221
|
});
|
|
@@ -228,7 +229,7 @@ var DevServer = class {
|
|
|
228
229
|
get endpoint() {
|
|
229
230
|
(0, import_invariant.invariant)(this._port, void 0, {
|
|
230
231
|
F: __dxlog_file3,
|
|
231
|
-
L:
|
|
232
|
+
L: 64,
|
|
232
233
|
S: this,
|
|
233
234
|
A: [
|
|
234
235
|
"this._port",
|
|
@@ -246,7 +247,7 @@ var DevServer = class {
|
|
|
246
247
|
async start() {
|
|
247
248
|
(0, import_invariant.invariant)(!this._server, void 0, {
|
|
248
249
|
F: __dxlog_file3,
|
|
249
|
-
L:
|
|
250
|
+
L: 77,
|
|
250
251
|
S: this,
|
|
251
252
|
A: [
|
|
252
253
|
"!this._server",
|
|
@@ -255,7 +256,7 @@ var DevServer = class {
|
|
|
255
256
|
});
|
|
256
257
|
import_log3.log.info("starting...", void 0, {
|
|
257
258
|
F: __dxlog_file3,
|
|
258
|
-
L:
|
|
259
|
+
L: 78,
|
|
259
260
|
S: this,
|
|
260
261
|
C: (f, a) => f(...a)
|
|
261
262
|
});
|
|
@@ -269,7 +270,7 @@ var DevServer = class {
|
|
|
269
270
|
path: path2
|
|
270
271
|
}, {
|
|
271
272
|
F: __dxlog_file3,
|
|
272
|
-
L:
|
|
273
|
+
L: 88,
|
|
273
274
|
S: this,
|
|
274
275
|
C: (f, a) => f(...a)
|
|
275
276
|
});
|
|
@@ -282,7 +283,7 @@ var DevServer = class {
|
|
|
282
283
|
} catch (err) {
|
|
283
284
|
import_log3.log.catch(err, void 0, {
|
|
284
285
|
F: __dxlog_file3,
|
|
285
|
-
L:
|
|
286
|
+
L: 98,
|
|
286
287
|
S: this,
|
|
287
288
|
C: (f, a) => f(...a)
|
|
288
289
|
});
|
|
@@ -307,7 +308,7 @@ var DevServer = class {
|
|
|
307
308
|
endpoint
|
|
308
309
|
}, {
|
|
309
310
|
F: __dxlog_file3,
|
|
310
|
-
L:
|
|
311
|
+
L: 113,
|
|
311
312
|
S: this,
|
|
312
313
|
C: (f, a) => f(...a)
|
|
313
314
|
});
|
|
@@ -322,7 +323,7 @@ var DevServer = class {
|
|
|
322
323
|
port: this._port
|
|
323
324
|
}, {
|
|
324
325
|
F: __dxlog_file3,
|
|
325
|
-
L:
|
|
326
|
+
L: 124,
|
|
326
327
|
S: this,
|
|
327
328
|
C: (f, a) => f(...a)
|
|
328
329
|
});
|
|
@@ -330,7 +331,7 @@ var DevServer = class {
|
|
|
330
331
|
async stop() {
|
|
331
332
|
(0, import_invariant.invariant)(this._server, void 0, {
|
|
332
333
|
F: __dxlog_file3,
|
|
333
|
-
L:
|
|
334
|
+
L: 128,
|
|
334
335
|
S: this,
|
|
335
336
|
A: [
|
|
336
337
|
"this._server",
|
|
@@ -339,7 +340,7 @@ var DevServer = class {
|
|
|
339
340
|
});
|
|
340
341
|
import_log3.log.info("stopping...", void 0, {
|
|
341
342
|
F: __dxlog_file3,
|
|
342
|
-
L:
|
|
343
|
+
L: 129,
|
|
343
344
|
S: this,
|
|
344
345
|
C: (f, a) => f(...a)
|
|
345
346
|
});
|
|
@@ -347,7 +348,7 @@ var DevServer = class {
|
|
|
347
348
|
this._server.close(async () => {
|
|
348
349
|
import_log3.log.info("server stopped", void 0, {
|
|
349
350
|
F: __dxlog_file3,
|
|
350
|
-
L:
|
|
351
|
+
L: 133,
|
|
351
352
|
S: this,
|
|
352
353
|
C: (f, a) => f(...a)
|
|
353
354
|
});
|
|
@@ -355,7 +356,7 @@ var DevServer = class {
|
|
|
355
356
|
if (this._functionServiceRegistration) {
|
|
356
357
|
(0, import_invariant.invariant)(this._client.services.services.FunctionRegistryService, void 0, {
|
|
357
358
|
F: __dxlog_file3,
|
|
358
|
-
L:
|
|
359
|
+
L: 136,
|
|
359
360
|
S: this,
|
|
360
361
|
A: [
|
|
361
362
|
"this._client.services.services.FunctionRegistryService",
|
|
@@ -369,7 +370,7 @@ var DevServer = class {
|
|
|
369
370
|
registrationId: this._functionServiceRegistration
|
|
370
371
|
}, {
|
|
371
372
|
F: __dxlog_file3,
|
|
372
|
-
L:
|
|
373
|
+
L: 141,
|
|
373
374
|
S: this,
|
|
374
375
|
C: (f, a) => f(...a)
|
|
375
376
|
});
|
|
@@ -386,7 +387,7 @@ var DevServer = class {
|
|
|
386
387
|
this._server = void 0;
|
|
387
388
|
import_log3.log.info("stopped", void 0, {
|
|
388
389
|
F: __dxlog_file3,
|
|
389
|
-
L:
|
|
390
|
+
L: 155,
|
|
390
391
|
S: this,
|
|
391
392
|
C: (f, a) => f(...a)
|
|
392
393
|
});
|
|
@@ -402,16 +403,16 @@ var DevServer = class {
|
|
|
402
403
|
force
|
|
403
404
|
}, {
|
|
404
405
|
F: __dxlog_file3,
|
|
405
|
-
L:
|
|
406
|
+
L: 164,
|
|
406
407
|
S: this,
|
|
407
408
|
C: (f, a) => f(...a)
|
|
408
409
|
});
|
|
409
410
|
if (force) {
|
|
410
|
-
Object.keys(
|
|
411
|
-
delete
|
|
411
|
+
Object.keys(import_chunk_3UYUR5N5.__require.cache).filter((key) => key.startsWith(filePath)).forEach((key) => {
|
|
412
|
+
delete import_chunk_3UYUR5N5.__require.cache[key];
|
|
412
413
|
});
|
|
413
414
|
}
|
|
414
|
-
const module2 = (0,
|
|
415
|
+
const module2 = (0, import_chunk_3UYUR5N5.__require)(filePath);
|
|
415
416
|
if (typeof module2.default !== "function") {
|
|
416
417
|
throw new Error(`Handler must export default function: ${uri}`);
|
|
417
418
|
}
|
|
@@ -423,7 +424,7 @@ var DevServer = class {
|
|
|
423
424
|
async _safeUpdateRegistration() {
|
|
424
425
|
(0, import_invariant.invariant)(this._functionServiceRegistration, void 0, {
|
|
425
426
|
F: __dxlog_file3,
|
|
426
|
-
L:
|
|
427
|
+
L: 186,
|
|
427
428
|
S: this,
|
|
428
429
|
A: [
|
|
429
430
|
"this._functionServiceRegistration",
|
|
@@ -438,10 +439,10 @@ var DevServer = class {
|
|
|
438
439
|
route
|
|
439
440
|
}))
|
|
440
441
|
});
|
|
441
|
-
} catch (
|
|
442
|
-
import_log3.log.catch(
|
|
442
|
+
} catch (err) {
|
|
443
|
+
import_log3.log.catch(err, void 0, {
|
|
443
444
|
F: __dxlog_file3,
|
|
444
|
-
L:
|
|
445
|
+
L: 193,
|
|
445
446
|
S: this,
|
|
446
447
|
C: (f, a) => f(...a)
|
|
447
448
|
});
|
|
@@ -458,7 +459,7 @@ var DevServer = class {
|
|
|
458
459
|
path: path2
|
|
459
460
|
}, {
|
|
460
461
|
F: __dxlog_file3,
|
|
461
|
-
L:
|
|
462
|
+
L: 204,
|
|
462
463
|
S: this,
|
|
463
464
|
C: (f, a) => f(...a)
|
|
464
465
|
});
|
|
@@ -472,7 +473,7 @@ var DevServer = class {
|
|
|
472
473
|
duration: Date.now() - now
|
|
473
474
|
}, {
|
|
474
475
|
F: __dxlog_file3,
|
|
475
|
-
L:
|
|
476
|
+
L: 207,
|
|
476
477
|
S: this,
|
|
477
478
|
C: (f, a) => f(...a)
|
|
478
479
|
});
|
|
@@ -483,7 +484,7 @@ var DevServer = class {
|
|
|
483
484
|
const { handler } = this._handlers[path2] ?? {};
|
|
484
485
|
(0, import_invariant.invariant)(handler, `invalid path: ${path2}`, {
|
|
485
486
|
F: __dxlog_file3,
|
|
486
|
-
L:
|
|
487
|
+
L: 214,
|
|
487
488
|
S: this,
|
|
488
489
|
A: [
|
|
489
490
|
"handler",
|
|
@@ -549,11 +550,11 @@ var Scheduler = class {
|
|
|
549
550
|
});
|
|
550
551
|
await Promise.all(mountTasks).catch(import_log4.log.catch);
|
|
551
552
|
}
|
|
552
|
-
async activate(space, functions,
|
|
553
|
-
const definition = functions.find((def) => def.uri ===
|
|
553
|
+
async activate(space, functions, trigger) {
|
|
554
|
+
const definition = functions.find((def) => def.uri === trigger.function);
|
|
554
555
|
if (!definition) {
|
|
555
556
|
import_log4.log.info("function is not found for trigger", {
|
|
556
|
-
|
|
557
|
+
trigger
|
|
557
558
|
}, {
|
|
558
559
|
F: __dxlog_file4,
|
|
559
560
|
L: 78,
|
|
@@ -562,9 +563,7 @@ var Scheduler = class {
|
|
|
562
563
|
});
|
|
563
564
|
return;
|
|
564
565
|
}
|
|
565
|
-
await this.triggers.activate({
|
|
566
|
-
space
|
|
567
|
-
}, fnTrigger, async (args) => {
|
|
566
|
+
await this.triggers.activate(space, trigger, async (args) => {
|
|
568
567
|
const mutex = this._functionUriToCallMutex.get(definition.uri) ?? new import_async3.Mutex();
|
|
569
568
|
this._functionUriToCallMutex.set(definition.uri, mutex);
|
|
570
569
|
import_log4.log.info("function triggered, waiting for mutex", {
|
|
@@ -584,8 +583,8 @@ var Scheduler = class {
|
|
|
584
583
|
S: this,
|
|
585
584
|
C: (f, a) => f(...a)
|
|
586
585
|
});
|
|
587
|
-
return this._execFunction(definition,
|
|
588
|
-
meta:
|
|
586
|
+
return this._execFunction(definition, trigger, {
|
|
587
|
+
meta: trigger.meta ?? {},
|
|
589
588
|
data: {
|
|
590
589
|
...args,
|
|
591
590
|
spaceKey: space.key
|
|
@@ -595,7 +594,7 @@ var Scheduler = class {
|
|
|
595
594
|
});
|
|
596
595
|
(0, import_log4.log)("activated trigger", {
|
|
597
596
|
space: space.key,
|
|
598
|
-
trigger
|
|
597
|
+
trigger
|
|
599
598
|
}, {
|
|
600
599
|
F: __dxlog_file4,
|
|
601
600
|
L: 96,
|
|
@@ -672,7 +671,7 @@ var createContext2 = () => new import_context3.Context({
|
|
|
672
671
|
name: "FunctionScheduler"
|
|
673
672
|
});
|
|
674
673
|
var __dxlog_file5 = "/home/runner/work/dxos/dxos/packages/core/functions/src/trigger/type/subscription-trigger.ts";
|
|
675
|
-
var createSubscriptionTrigger = async (ctx,
|
|
674
|
+
var createSubscriptionTrigger = async (ctx, space, spec, callback) => {
|
|
676
675
|
const objectIds = /* @__PURE__ */ new Set();
|
|
677
676
|
const task = new import_async5.UpdateScheduler(ctx, async () => {
|
|
678
677
|
if (objectIds.size > 0) {
|
|
@@ -700,7 +699,7 @@ var createSubscriptionTrigger = async (ctx, triggerCtx, spec, callback) => {
|
|
|
700
699
|
updated: updated.length
|
|
701
700
|
}, {
|
|
702
701
|
F: __dxlog_file5,
|
|
703
|
-
L:
|
|
702
|
+
L: 47,
|
|
704
703
|
S: void 0,
|
|
705
704
|
C: (f, a) => f(...a)
|
|
706
705
|
});
|
|
@@ -710,16 +709,16 @@ var createSubscriptionTrigger = async (ctx, triggerCtx, spec, callback) => {
|
|
|
710
709
|
subscriptions.push(() => subscription.unsubscribe());
|
|
711
710
|
const { filter, options: { deep, delay } = {} } = spec;
|
|
712
711
|
const update = ({ objects }) => {
|
|
712
|
+
import_log6.log.info("update", {
|
|
713
|
+
objects: objects.length
|
|
714
|
+
}, {
|
|
715
|
+
F: __dxlog_file5,
|
|
716
|
+
L: 57,
|
|
717
|
+
S: void 0,
|
|
718
|
+
C: (f, a) => f(...a)
|
|
719
|
+
});
|
|
713
720
|
subscription.update(objects);
|
|
714
721
|
if (deep) {
|
|
715
|
-
import_log6.log.info("update", {
|
|
716
|
-
objects: objects.length
|
|
717
|
-
}, {
|
|
718
|
-
F: __dxlog_file5,
|
|
719
|
-
L: 59,
|
|
720
|
-
S: void 0,
|
|
721
|
-
C: (f, a) => f(...a)
|
|
722
|
-
});
|
|
723
722
|
for (const object of objects) {
|
|
724
723
|
const content = object.content;
|
|
725
724
|
if (content instanceof import_types.TextV0Type) {
|
|
@@ -730,14 +729,24 @@ var createSubscriptionTrigger = async (ctx, triggerCtx, spec, callback) => {
|
|
|
730
729
|
}
|
|
731
730
|
}
|
|
732
731
|
};
|
|
733
|
-
|
|
734
|
-
|
|
732
|
+
import_log6.log.info("subscription", {
|
|
733
|
+
filter
|
|
734
|
+
}, {
|
|
735
|
+
F: __dxlog_file5,
|
|
736
|
+
L: 76,
|
|
737
|
+
S: void 0,
|
|
738
|
+
C: (f, a) => f(...a)
|
|
739
|
+
});
|
|
740
|
+
if (filter) {
|
|
741
|
+
const query = space.db.query(import_echo3.Filter.typename(filter[0].type, filter[0].props));
|
|
742
|
+
subscriptions.push(query.subscribe(delay ? (0, import_async5.debounce)(update, delay) : update));
|
|
743
|
+
}
|
|
735
744
|
ctx.onDispose(() => {
|
|
736
745
|
subscriptions.forEach((unsubscribe) => unsubscribe());
|
|
737
746
|
});
|
|
738
747
|
};
|
|
739
748
|
var __dxlog_file6 = "/home/runner/work/dxos/dxos/packages/core/functions/src/trigger/type/timer-trigger.ts";
|
|
740
|
-
var createTimerTrigger = async (ctx,
|
|
749
|
+
var createTimerTrigger = async (ctx, space, spec, callback) => {
|
|
741
750
|
const task = new import_async6.DeferredTask(ctx, async () => {
|
|
742
751
|
await callback({});
|
|
743
752
|
});
|
|
@@ -752,12 +761,12 @@ var createTimerTrigger = async (ctx, triggerContext, spec, callback) => {
|
|
|
752
761
|
last = now;
|
|
753
762
|
run++;
|
|
754
763
|
import_log7.log.info("tick", {
|
|
755
|
-
space:
|
|
764
|
+
space: space.key.truncate(),
|
|
756
765
|
count: run,
|
|
757
766
|
delta
|
|
758
767
|
}, {
|
|
759
768
|
F: __dxlog_file6,
|
|
760
|
-
L:
|
|
769
|
+
L: 38,
|
|
761
770
|
S: void 0,
|
|
762
771
|
C: (f, a) => f(...a)
|
|
763
772
|
});
|
|
@@ -768,7 +777,7 @@ var createTimerTrigger = async (ctx, triggerContext, spec, callback) => {
|
|
|
768
777
|
ctx.onDispose(() => job.stop());
|
|
769
778
|
};
|
|
770
779
|
var __dxlog_file7 = "/home/runner/work/dxos/dxos/packages/core/functions/src/trigger/type/webhook-trigger.ts";
|
|
771
|
-
var createWebhookTrigger = async (ctx,
|
|
780
|
+
var createWebhookTrigger = async (ctx, space, spec, callback) => {
|
|
772
781
|
const server = import_node_http.default.createServer(async (req, res) => {
|
|
773
782
|
if (req.method !== spec.method) {
|
|
774
783
|
res.statusCode = 405;
|
|
@@ -785,7 +794,7 @@ var createWebhookTrigger = async (ctx, _, spec, callback) => {
|
|
|
785
794
|
port
|
|
786
795
|
}, {
|
|
787
796
|
F: __dxlog_file7,
|
|
788
|
-
L:
|
|
797
|
+
L: 41,
|
|
789
798
|
S: void 0,
|
|
790
799
|
C: (f, a) => f(...a)
|
|
791
800
|
});
|
|
@@ -796,7 +805,7 @@ var createWebhookTrigger = async (ctx, _, spec, callback) => {
|
|
|
796
805
|
});
|
|
797
806
|
};
|
|
798
807
|
var __dxlog_file8 = "/home/runner/work/dxos/dxos/packages/core/functions/src/trigger/type/websocket-trigger.ts";
|
|
799
|
-
var createWebsocketTrigger = async (ctx,
|
|
808
|
+
var createWebsocketTrigger = async (ctx, space, spec, callback, options = {
|
|
800
809
|
retryDelay: 2,
|
|
801
810
|
maxAttempts: 5
|
|
802
811
|
}) => {
|
|
@@ -811,7 +820,7 @@ var createWebsocketTrigger = async (ctx, triggerCtx, spec, callback, options = {
|
|
|
811
820
|
url
|
|
812
821
|
}, {
|
|
813
822
|
F: __dxlog_file8,
|
|
814
|
-
L:
|
|
823
|
+
L: 40,
|
|
815
824
|
S: void 0,
|
|
816
825
|
C: (f, a) => f(...a)
|
|
817
826
|
});
|
|
@@ -826,7 +835,7 @@ var createWebsocketTrigger = async (ctx, triggerCtx, spec, callback, options = {
|
|
|
826
835
|
code: event.code
|
|
827
836
|
}, {
|
|
828
837
|
F: __dxlog_file8,
|
|
829
|
-
L:
|
|
838
|
+
L: 49,
|
|
830
839
|
S: void 0,
|
|
831
840
|
C: (f, a) => f(...a)
|
|
832
841
|
});
|
|
@@ -836,11 +845,11 @@ var createWebsocketTrigger = async (ctx, triggerCtx, spec, callback, options = {
|
|
|
836
845
|
url
|
|
837
846
|
}, {
|
|
838
847
|
F: __dxlog_file8,
|
|
839
|
-
L:
|
|
848
|
+
L: 54,
|
|
840
849
|
S: void 0,
|
|
841
850
|
C: (f, a) => f(...a)
|
|
842
851
|
});
|
|
843
|
-
await createWebsocketTrigger(ctx,
|
|
852
|
+
await createWebsocketTrigger(ctx, space, spec, callback, options);
|
|
844
853
|
}, options.retryDelay * 1e3);
|
|
845
854
|
}
|
|
846
855
|
open.wake(false);
|
|
@@ -850,7 +859,7 @@ var createWebsocketTrigger = async (ctx, triggerCtx, spec, callback, options = {
|
|
|
850
859
|
url
|
|
851
860
|
}, {
|
|
852
861
|
F: __dxlog_file8,
|
|
853
|
-
L:
|
|
862
|
+
L: 63,
|
|
854
863
|
S: void 0,
|
|
855
864
|
C: (f, a) => f(...a)
|
|
856
865
|
});
|
|
@@ -859,7 +868,7 @@ var createWebsocketTrigger = async (ctx, triggerCtx, spec, callback, options = {
|
|
|
859
868
|
try {
|
|
860
869
|
import_log9.log.info("message", void 0, {
|
|
861
870
|
F: __dxlog_file8,
|
|
862
|
-
L:
|
|
871
|
+
L: 68,
|
|
863
872
|
S: void 0,
|
|
864
873
|
C: (f, a) => f(...a)
|
|
865
874
|
});
|
|
@@ -872,7 +881,7 @@ var createWebsocketTrigger = async (ctx, triggerCtx, spec, callback, options = {
|
|
|
872
881
|
url
|
|
873
882
|
}, {
|
|
874
883
|
F: __dxlog_file8,
|
|
875
|
-
L:
|
|
884
|
+
L: 72,
|
|
876
885
|
S: void 0,
|
|
877
886
|
C: (f, a) => f(...a)
|
|
878
887
|
});
|
|
@@ -889,7 +898,7 @@ var createWebsocketTrigger = async (ctx, triggerCtx, spec, callback, options = {
|
|
|
889
898
|
attempt
|
|
890
899
|
}, {
|
|
891
900
|
F: __dxlog_file8,
|
|
892
|
-
L:
|
|
901
|
+
L: 83,
|
|
893
902
|
S: void 0,
|
|
894
903
|
C: (f, a) => f(...a)
|
|
895
904
|
});
|
|
@@ -923,24 +932,24 @@ var TriggerRegistry = class extends import_context4.Resource {
|
|
|
923
932
|
getInactiveTriggers(space) {
|
|
924
933
|
return this._getTriggers(space, (t) => t.activationCtx == null);
|
|
925
934
|
}
|
|
926
|
-
async activate(
|
|
935
|
+
async activate(space, trigger, callback) {
|
|
927
936
|
(0, import_log5.log)("activate", {
|
|
928
|
-
space:
|
|
937
|
+
space: space.key,
|
|
929
938
|
trigger
|
|
930
939
|
}, {
|
|
931
940
|
F: __dxlog_file9,
|
|
932
|
-
L:
|
|
941
|
+
L: 72,
|
|
933
942
|
S: this,
|
|
934
943
|
C: (f, a) => f(...a)
|
|
935
944
|
});
|
|
936
945
|
const activationCtx = new import_context4.Context({
|
|
937
|
-
name: `
|
|
946
|
+
name: `FunctionTrigger-${trigger.function}`
|
|
938
947
|
});
|
|
939
948
|
this._ctx.onDispose(() => activationCtx.dispose());
|
|
940
|
-
const registeredTrigger = this._triggersBySpaceKey.get(
|
|
949
|
+
const registeredTrigger = this._triggersBySpaceKey.get(space.key)?.find((reg) => reg.trigger.id === trigger.id);
|
|
941
950
|
(0, import_invariant2.invariant)(registeredTrigger, `Trigger is not registered: ${trigger.function}`, {
|
|
942
951
|
F: __dxlog_file9,
|
|
943
|
-
L:
|
|
952
|
+
L: 77,
|
|
944
953
|
S: this,
|
|
945
954
|
A: [
|
|
946
955
|
"registeredTrigger",
|
|
@@ -950,7 +959,7 @@ var TriggerRegistry = class extends import_context4.Resource {
|
|
|
950
959
|
registeredTrigger.activationCtx = activationCtx;
|
|
951
960
|
try {
|
|
952
961
|
const options = this._options?.[trigger.spec.type];
|
|
953
|
-
await triggerHandlers[trigger.spec.type](activationCtx,
|
|
962
|
+
await triggerHandlers[trigger.spec.type](activationCtx, space, trigger.spec, callback, options);
|
|
954
963
|
} catch (err) {
|
|
955
964
|
delete registeredTrigger.activationCtx;
|
|
956
965
|
throw err;
|
|
@@ -964,35 +973,52 @@ var TriggerRegistry = class extends import_context4.Resource {
|
|
|
964
973
|
space: space.key
|
|
965
974
|
}, {
|
|
966
975
|
F: __dxlog_file9,
|
|
967
|
-
L:
|
|
976
|
+
L: 93,
|
|
968
977
|
S: this,
|
|
969
978
|
C: (f, a) => f(...a)
|
|
970
979
|
});
|
|
971
980
|
if (!manifest.triggers?.length) {
|
|
972
981
|
return;
|
|
973
982
|
}
|
|
974
|
-
if (!space.db.graph.runtimeSchemaRegistry.hasSchema(
|
|
975
|
-
space.db.graph.runtimeSchemaRegistry.registerSchema(
|
|
983
|
+
if (!space.db.graph.runtimeSchemaRegistry.hasSchema(import_chunk_3UYUR5N5.FunctionTrigger)) {
|
|
984
|
+
space.db.graph.runtimeSchemaRegistry.registerSchema(import_chunk_3UYUR5N5.FunctionTrigger);
|
|
976
985
|
}
|
|
977
|
-
const
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
+
const manifestTriggers = manifest.triggers.map((trigger) => {
|
|
987
|
+
let keys = trigger[import_echo_schema.ECHO_ATTR_META]?.keys;
|
|
988
|
+
delete trigger[import_echo_schema.ECHO_ATTR_META];
|
|
989
|
+
if (!keys?.length) {
|
|
990
|
+
keys = [
|
|
991
|
+
(0, import_echo_schema.foreignKey)("manifest", [
|
|
992
|
+
trigger.function,
|
|
993
|
+
trigger.spec.type
|
|
994
|
+
].join(":"))
|
|
995
|
+
];
|
|
996
|
+
}
|
|
997
|
+
return (0, import_echo2.create)(import_chunk_3UYUR5N5.FunctionTrigger, trigger, {
|
|
998
|
+
keys
|
|
999
|
+
});
|
|
986
1000
|
});
|
|
1001
|
+
const { objects: existing } = await space.db.query(import_echo2.Filter.schema(import_chunk_3UYUR5N5.FunctionTrigger)).run();
|
|
1002
|
+
const { added } = (0, import_util3.diff)(existing, manifestTriggers, import_echo_schema.compareForeignKeys);
|
|
987
1003
|
added.forEach((trigger) => {
|
|
988
|
-
|
|
989
|
-
|
|
1004
|
+
space.db.add(trigger);
|
|
1005
|
+
import_log5.log.info("added", {
|
|
1006
|
+
meta: (0, import_echo2.getMeta)(trigger)
|
|
1007
|
+
}, {
|
|
1008
|
+
F: __dxlog_file9,
|
|
1009
|
+
L: 120,
|
|
1010
|
+
S: this,
|
|
1011
|
+
C: (f, a) => f(...a)
|
|
1012
|
+
});
|
|
990
1013
|
});
|
|
1014
|
+
if (added.length > 0) {
|
|
1015
|
+
await space.db.flush();
|
|
1016
|
+
}
|
|
991
1017
|
}
|
|
992
1018
|
async _open() {
|
|
993
1019
|
import_log5.log.info("open...", void 0, {
|
|
994
1020
|
F: __dxlog_file9,
|
|
995
|
-
L:
|
|
1021
|
+
L: 129,
|
|
996
1022
|
S: this,
|
|
997
1023
|
C: (f, a) => f(...a)
|
|
998
1024
|
});
|
|
@@ -1007,78 +1033,89 @@ var TriggerRegistry = class extends import_context4.Resource {
|
|
|
1007
1033
|
if (this._ctx.disposed) {
|
|
1008
1034
|
break;
|
|
1009
1035
|
}
|
|
1010
|
-
this._ctx.onDispose(space.db.query(import_echo2.Filter.schema(
|
|
1036
|
+
this._ctx.onDispose(space.db.query(import_echo2.Filter.schema(import_chunk_3UYUR5N5.FunctionTrigger)).subscribe(async ({ objects: current }) => {
|
|
1011
1037
|
import_log5.log.info("update", {
|
|
1012
1038
|
space: space.key,
|
|
1013
|
-
|
|
1039
|
+
registered: registered.length,
|
|
1040
|
+
current: current.length
|
|
1014
1041
|
}, {
|
|
1015
1042
|
F: __dxlog_file9,
|
|
1016
|
-
L:
|
|
1043
|
+
L: 146,
|
|
1017
1044
|
S: this,
|
|
1018
1045
|
C: (f, a) => f(...a)
|
|
1019
1046
|
});
|
|
1020
|
-
await this._handleRemovedTriggers(space,
|
|
1021
|
-
this._handleNewTriggers(space,
|
|
1047
|
+
await this._handleRemovedTriggers(space, current, registered);
|
|
1048
|
+
this._handleNewTriggers(space, current, registered);
|
|
1022
1049
|
}));
|
|
1023
1050
|
}
|
|
1024
1051
|
});
|
|
1025
1052
|
this._ctx.onDispose(() => spaceListSubscription.unsubscribe());
|
|
1053
|
+
import_log5.log.info("opened", void 0, {
|
|
1054
|
+
F: __dxlog_file9,
|
|
1055
|
+
L: 155,
|
|
1056
|
+
S: this,
|
|
1057
|
+
C: (f, a) => f(...a)
|
|
1058
|
+
});
|
|
1026
1059
|
}
|
|
1027
1060
|
async _close(_) {
|
|
1028
1061
|
import_log5.log.info("close...", void 0, {
|
|
1029
1062
|
F: __dxlog_file9,
|
|
1030
|
-
L:
|
|
1063
|
+
L: 159,
|
|
1031
1064
|
S: this,
|
|
1032
1065
|
C: (f, a) => f(...a)
|
|
1033
1066
|
});
|
|
1034
1067
|
this._triggersBySpaceKey.clear();
|
|
1068
|
+
import_log5.log.info("closed", void 0, {
|
|
1069
|
+
F: __dxlog_file9,
|
|
1070
|
+
L: 161,
|
|
1071
|
+
S: this,
|
|
1072
|
+
C: (f, a) => f(...a)
|
|
1073
|
+
});
|
|
1035
1074
|
}
|
|
1036
|
-
_handleNewTriggers(space,
|
|
1037
|
-
const
|
|
1038
|
-
return registered.find((reg) => reg.trigger.id === candidate.id) == null;
|
|
1075
|
+
_handleNewTriggers(space, current, registered) {
|
|
1076
|
+
const added = current.filter((candidate) => {
|
|
1077
|
+
return candidate.enabled && registered.find((reg) => reg.trigger.id === candidate.id) == null;
|
|
1039
1078
|
});
|
|
1040
|
-
if (
|
|
1041
|
-
const newRegisteredTriggers =
|
|
1079
|
+
if (added.length > 0) {
|
|
1080
|
+
const newRegisteredTriggers = added.map((trigger) => ({
|
|
1042
1081
|
trigger
|
|
1043
1082
|
}));
|
|
1044
1083
|
registered.push(...newRegisteredTriggers);
|
|
1045
1084
|
import_log5.log.info("added", () => ({
|
|
1046
1085
|
spaceKey: space.key,
|
|
1047
|
-
triggers:
|
|
1086
|
+
triggers: added.map((trigger) => trigger.function)
|
|
1048
1087
|
}), {
|
|
1049
1088
|
F: __dxlog_file9,
|
|
1050
|
-
L:
|
|
1089
|
+
L: 172,
|
|
1051
1090
|
S: this,
|
|
1052
1091
|
C: (f, a) => f(...a)
|
|
1053
1092
|
});
|
|
1054
1093
|
this.registered.emit({
|
|
1055
1094
|
space,
|
|
1056
|
-
triggers:
|
|
1095
|
+
triggers: added
|
|
1057
1096
|
});
|
|
1058
1097
|
}
|
|
1059
1098
|
}
|
|
1060
|
-
async _handleRemovedTriggers(space,
|
|
1099
|
+
async _handleRemovedTriggers(space, current, registered) {
|
|
1061
1100
|
const removed = [];
|
|
1062
1101
|
for (let i = registered.length - 1; i >= 0; i--) {
|
|
1063
|
-
const wasRemoved =
|
|
1102
|
+
const wasRemoved = current.filter((trigger) => trigger.enabled).find((trigger) => trigger.id === registered[i].trigger.id) == null;
|
|
1064
1103
|
if (wasRemoved) {
|
|
1065
|
-
if (removed.length) {
|
|
1066
|
-
import_log5.log.info("removed", () => ({
|
|
1067
|
-
spaceKey: space.key,
|
|
1068
|
-
triggers: removed.map((trigger) => trigger.function)
|
|
1069
|
-
}), {
|
|
1070
|
-
F: __dxlog_file9,
|
|
1071
|
-
L: 181,
|
|
1072
|
-
S: this,
|
|
1073
|
-
C: (f, a) => f(...a)
|
|
1074
|
-
});
|
|
1075
|
-
}
|
|
1076
1104
|
const unregistered = registered.splice(i, 1)[0];
|
|
1077
1105
|
await unregistered.activationCtx?.dispose();
|
|
1078
1106
|
removed.push(unregistered.trigger);
|
|
1079
1107
|
}
|
|
1080
1108
|
}
|
|
1081
1109
|
if (removed.length > 0) {
|
|
1110
|
+
import_log5.log.info("removed", () => ({
|
|
1111
|
+
spaceKey: space.key,
|
|
1112
|
+
triggers: removed.map((trigger) => trigger.function)
|
|
1113
|
+
}), {
|
|
1114
|
+
F: __dxlog_file9,
|
|
1115
|
+
L: 198,
|
|
1116
|
+
S: this,
|
|
1117
|
+
C: (f, a) => f(...a)
|
|
1118
|
+
});
|
|
1082
1119
|
this.removed.emit({
|
|
1083
1120
|
space,
|
|
1084
1121
|
triggers: removed
|