@dxos/functions 0.5.3-main.427f0a3 → 0.5.3-main.4490e2f
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/handler.d.ts.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
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
FunctionManifestSchema,
|
|
6
6
|
FunctionTrigger,
|
|
7
7
|
__require
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-4D4I3YMJ.mjs";
|
|
9
9
|
|
|
10
10
|
// packages/core/functions/src/function/function-registry.ts
|
|
11
11
|
import { Event } from "@dxos/async";
|
|
@@ -161,7 +161,7 @@ var DevServer = class {
|
|
|
161
161
|
added
|
|
162
162
|
}, {
|
|
163
163
|
F: __dxlog_file3,
|
|
164
|
-
L:
|
|
164
|
+
L: 53,
|
|
165
165
|
S: this,
|
|
166
166
|
C: (f, a) => f(...a)
|
|
167
167
|
});
|
|
@@ -175,7 +175,7 @@ var DevServer = class {
|
|
|
175
175
|
get endpoint() {
|
|
176
176
|
invariant(this._port, void 0, {
|
|
177
177
|
F: __dxlog_file3,
|
|
178
|
-
L:
|
|
178
|
+
L: 64,
|
|
179
179
|
S: this,
|
|
180
180
|
A: [
|
|
181
181
|
"this._port",
|
|
@@ -193,7 +193,7 @@ var DevServer = class {
|
|
|
193
193
|
async start() {
|
|
194
194
|
invariant(!this._server, void 0, {
|
|
195
195
|
F: __dxlog_file3,
|
|
196
|
-
L:
|
|
196
|
+
L: 77,
|
|
197
197
|
S: this,
|
|
198
198
|
A: [
|
|
199
199
|
"!this._server",
|
|
@@ -202,7 +202,7 @@ var DevServer = class {
|
|
|
202
202
|
});
|
|
203
203
|
log3.info("starting...", void 0, {
|
|
204
204
|
F: __dxlog_file3,
|
|
205
|
-
L:
|
|
205
|
+
L: 78,
|
|
206
206
|
S: this,
|
|
207
207
|
C: (f, a) => f(...a)
|
|
208
208
|
});
|
|
@@ -216,7 +216,7 @@ var DevServer = class {
|
|
|
216
216
|
path: path2
|
|
217
217
|
}, {
|
|
218
218
|
F: __dxlog_file3,
|
|
219
|
-
L:
|
|
219
|
+
L: 88,
|
|
220
220
|
S: this,
|
|
221
221
|
C: (f, a) => f(...a)
|
|
222
222
|
});
|
|
@@ -229,7 +229,7 @@ var DevServer = class {
|
|
|
229
229
|
} catch (err) {
|
|
230
230
|
log3.catch(err, void 0, {
|
|
231
231
|
F: __dxlog_file3,
|
|
232
|
-
L:
|
|
232
|
+
L: 98,
|
|
233
233
|
S: this,
|
|
234
234
|
C: (f, a) => f(...a)
|
|
235
235
|
});
|
|
@@ -254,7 +254,7 @@ var DevServer = class {
|
|
|
254
254
|
endpoint
|
|
255
255
|
}, {
|
|
256
256
|
F: __dxlog_file3,
|
|
257
|
-
L:
|
|
257
|
+
L: 113,
|
|
258
258
|
S: this,
|
|
259
259
|
C: (f, a) => f(...a)
|
|
260
260
|
});
|
|
@@ -269,7 +269,7 @@ var DevServer = class {
|
|
|
269
269
|
port: this._port
|
|
270
270
|
}, {
|
|
271
271
|
F: __dxlog_file3,
|
|
272
|
-
L:
|
|
272
|
+
L: 124,
|
|
273
273
|
S: this,
|
|
274
274
|
C: (f, a) => f(...a)
|
|
275
275
|
});
|
|
@@ -277,7 +277,7 @@ var DevServer = class {
|
|
|
277
277
|
async stop() {
|
|
278
278
|
invariant(this._server, void 0, {
|
|
279
279
|
F: __dxlog_file3,
|
|
280
|
-
L:
|
|
280
|
+
L: 128,
|
|
281
281
|
S: this,
|
|
282
282
|
A: [
|
|
283
283
|
"this._server",
|
|
@@ -286,7 +286,7 @@ var DevServer = class {
|
|
|
286
286
|
});
|
|
287
287
|
log3.info("stopping...", void 0, {
|
|
288
288
|
F: __dxlog_file3,
|
|
289
|
-
L:
|
|
289
|
+
L: 129,
|
|
290
290
|
S: this,
|
|
291
291
|
C: (f, a) => f(...a)
|
|
292
292
|
});
|
|
@@ -294,7 +294,7 @@ var DevServer = class {
|
|
|
294
294
|
this._server.close(async () => {
|
|
295
295
|
log3.info("server stopped", void 0, {
|
|
296
296
|
F: __dxlog_file3,
|
|
297
|
-
L:
|
|
297
|
+
L: 133,
|
|
298
298
|
S: this,
|
|
299
299
|
C: (f, a) => f(...a)
|
|
300
300
|
});
|
|
@@ -302,7 +302,7 @@ var DevServer = class {
|
|
|
302
302
|
if (this._functionServiceRegistration) {
|
|
303
303
|
invariant(this._client.services.services.FunctionRegistryService, void 0, {
|
|
304
304
|
F: __dxlog_file3,
|
|
305
|
-
L:
|
|
305
|
+
L: 136,
|
|
306
306
|
S: this,
|
|
307
307
|
A: [
|
|
308
308
|
"this._client.services.services.FunctionRegistryService",
|
|
@@ -316,7 +316,7 @@ var DevServer = class {
|
|
|
316
316
|
registrationId: this._functionServiceRegistration
|
|
317
317
|
}, {
|
|
318
318
|
F: __dxlog_file3,
|
|
319
|
-
L:
|
|
319
|
+
L: 141,
|
|
320
320
|
S: this,
|
|
321
321
|
C: (f, a) => f(...a)
|
|
322
322
|
});
|
|
@@ -333,7 +333,7 @@ var DevServer = class {
|
|
|
333
333
|
this._server = void 0;
|
|
334
334
|
log3.info("stopped", void 0, {
|
|
335
335
|
F: __dxlog_file3,
|
|
336
|
-
L:
|
|
336
|
+
L: 155,
|
|
337
337
|
S: this,
|
|
338
338
|
C: (f, a) => f(...a)
|
|
339
339
|
});
|
|
@@ -349,7 +349,7 @@ var DevServer = class {
|
|
|
349
349
|
force
|
|
350
350
|
}, {
|
|
351
351
|
F: __dxlog_file3,
|
|
352
|
-
L:
|
|
352
|
+
L: 164,
|
|
353
353
|
S: this,
|
|
354
354
|
C: (f, a) => f(...a)
|
|
355
355
|
});
|
|
@@ -370,7 +370,7 @@ var DevServer = class {
|
|
|
370
370
|
async _safeUpdateRegistration() {
|
|
371
371
|
invariant(this._functionServiceRegistration, void 0, {
|
|
372
372
|
F: __dxlog_file3,
|
|
373
|
-
L:
|
|
373
|
+
L: 186,
|
|
374
374
|
S: this,
|
|
375
375
|
A: [
|
|
376
376
|
"this._functionServiceRegistration",
|
|
@@ -385,10 +385,10 @@ var DevServer = class {
|
|
|
385
385
|
route
|
|
386
386
|
}))
|
|
387
387
|
});
|
|
388
|
-
} catch (
|
|
389
|
-
log3.catch(
|
|
388
|
+
} catch (err) {
|
|
389
|
+
log3.catch(err, void 0, {
|
|
390
390
|
F: __dxlog_file3,
|
|
391
|
-
L:
|
|
391
|
+
L: 193,
|
|
392
392
|
S: this,
|
|
393
393
|
C: (f, a) => f(...a)
|
|
394
394
|
});
|
|
@@ -405,7 +405,7 @@ var DevServer = class {
|
|
|
405
405
|
path: path2
|
|
406
406
|
}, {
|
|
407
407
|
F: __dxlog_file3,
|
|
408
|
-
L:
|
|
408
|
+
L: 204,
|
|
409
409
|
S: this,
|
|
410
410
|
C: (f, a) => f(...a)
|
|
411
411
|
});
|
|
@@ -419,7 +419,7 @@ var DevServer = class {
|
|
|
419
419
|
duration: Date.now() - now
|
|
420
420
|
}, {
|
|
421
421
|
F: __dxlog_file3,
|
|
422
|
-
L:
|
|
422
|
+
L: 207,
|
|
423
423
|
S: this,
|
|
424
424
|
C: (f, a) => f(...a)
|
|
425
425
|
});
|
|
@@ -430,7 +430,7 @@ var DevServer = class {
|
|
|
430
430
|
const { handler } = this._handlers[path2] ?? {};
|
|
431
431
|
invariant(handler, `invalid path: ${path2}`, {
|
|
432
432
|
F: __dxlog_file3,
|
|
433
|
-
L:
|
|
433
|
+
L: 214,
|
|
434
434
|
S: this,
|
|
435
435
|
A: [
|
|
436
436
|
"handler",
|
|
@@ -502,11 +502,11 @@ var Scheduler = class {
|
|
|
502
502
|
});
|
|
503
503
|
await Promise.all(mountTasks).catch(log4.catch);
|
|
504
504
|
}
|
|
505
|
-
async activate(space, functions,
|
|
506
|
-
const definition = functions.find((def) => def.uri ===
|
|
505
|
+
async activate(space, functions, trigger) {
|
|
506
|
+
const definition = functions.find((def) => def.uri === trigger.function);
|
|
507
507
|
if (!definition) {
|
|
508
508
|
log4.info("function is not found for trigger", {
|
|
509
|
-
|
|
509
|
+
trigger
|
|
510
510
|
}, {
|
|
511
511
|
F: __dxlog_file4,
|
|
512
512
|
L: 78,
|
|
@@ -515,9 +515,7 @@ var Scheduler = class {
|
|
|
515
515
|
});
|
|
516
516
|
return;
|
|
517
517
|
}
|
|
518
|
-
await this.triggers.activate({
|
|
519
|
-
space
|
|
520
|
-
}, fnTrigger, async (args) => {
|
|
518
|
+
await this.triggers.activate(space, trigger, async (args) => {
|
|
521
519
|
const mutex = this._functionUriToCallMutex.get(definition.uri) ?? new Mutex();
|
|
522
520
|
this._functionUriToCallMutex.set(definition.uri, mutex);
|
|
523
521
|
log4.info("function triggered, waiting for mutex", {
|
|
@@ -537,8 +535,8 @@ var Scheduler = class {
|
|
|
537
535
|
S: this,
|
|
538
536
|
C: (f, a) => f(...a)
|
|
539
537
|
});
|
|
540
|
-
return this._execFunction(definition,
|
|
541
|
-
meta:
|
|
538
|
+
return this._execFunction(definition, trigger, {
|
|
539
|
+
meta: trigger.meta ?? {},
|
|
542
540
|
data: {
|
|
543
541
|
...args,
|
|
544
542
|
spaceKey: space.key
|
|
@@ -548,7 +546,7 @@ var Scheduler = class {
|
|
|
548
546
|
});
|
|
549
547
|
log4("activated trigger", {
|
|
550
548
|
space: space.key,
|
|
551
|
-
trigger
|
|
549
|
+
trigger
|
|
552
550
|
}, {
|
|
553
551
|
F: __dxlog_file4,
|
|
554
552
|
L: 96,
|
|
@@ -629,19 +627,20 @@ var createContext2 = () => new Context2({
|
|
|
629
627
|
import { Event as Event3 } from "@dxos/async";
|
|
630
628
|
import { create as create2, Filter as Filter3, getMeta } from "@dxos/client/echo";
|
|
631
629
|
import { Context as Context3, Resource as Resource2 } from "@dxos/context";
|
|
632
|
-
import { ECHO_ATTR_META, foreignKey
|
|
630
|
+
import { compareForeignKeys, ECHO_ATTR_META, foreignKey } from "@dxos/echo-schema";
|
|
633
631
|
import { invariant as invariant2 } from "@dxos/invariant";
|
|
634
632
|
import { PublicKey as PublicKey3 } from "@dxos/keys";
|
|
635
633
|
import { log as log9 } from "@dxos/log";
|
|
636
|
-
import { ComplexMap as ComplexMap2, diff as diff2
|
|
634
|
+
import { ComplexMap as ComplexMap2, diff as diff2 } from "@dxos/util";
|
|
637
635
|
|
|
638
636
|
// packages/core/functions/src/trigger/type/subscription-trigger.ts
|
|
639
637
|
import { TextV0Type } from "@braneframe/types";
|
|
640
638
|
import { debounce, UpdateScheduler } from "@dxos/async";
|
|
641
|
-
import {
|
|
639
|
+
import { Filter as Filter2 } from "@dxos/client/echo";
|
|
640
|
+
import { createSubscription, getAutomergeObjectCore } from "@dxos/echo-db";
|
|
642
641
|
import { log as log5 } from "@dxos/log";
|
|
643
642
|
var __dxlog_file5 = "/home/runner/work/dxos/dxos/packages/core/functions/src/trigger/type/subscription-trigger.ts";
|
|
644
|
-
var createSubscriptionTrigger = async (ctx,
|
|
643
|
+
var createSubscriptionTrigger = async (ctx, space, spec, callback) => {
|
|
645
644
|
const objectIds = /* @__PURE__ */ new Set();
|
|
646
645
|
const task = new UpdateScheduler(ctx, async () => {
|
|
647
646
|
if (objectIds.size > 0) {
|
|
@@ -669,7 +668,7 @@ var createSubscriptionTrigger = async (ctx, triggerCtx, spec, callback) => {
|
|
|
669
668
|
updated: updated.length
|
|
670
669
|
}, {
|
|
671
670
|
F: __dxlog_file5,
|
|
672
|
-
L:
|
|
671
|
+
L: 47,
|
|
673
672
|
S: void 0,
|
|
674
673
|
C: (f, a) => f(...a)
|
|
675
674
|
});
|
|
@@ -679,16 +678,16 @@ var createSubscriptionTrigger = async (ctx, triggerCtx, spec, callback) => {
|
|
|
679
678
|
subscriptions.push(() => subscription.unsubscribe());
|
|
680
679
|
const { filter, options: { deep, delay } = {} } = spec;
|
|
681
680
|
const update = ({ objects }) => {
|
|
681
|
+
log5.info("update", {
|
|
682
|
+
objects: objects.length
|
|
683
|
+
}, {
|
|
684
|
+
F: __dxlog_file5,
|
|
685
|
+
L: 57,
|
|
686
|
+
S: void 0,
|
|
687
|
+
C: (f, a) => f(...a)
|
|
688
|
+
});
|
|
682
689
|
subscription.update(objects);
|
|
683
690
|
if (deep) {
|
|
684
|
-
log5.info("update", {
|
|
685
|
-
objects: objects.length
|
|
686
|
-
}, {
|
|
687
|
-
F: __dxlog_file5,
|
|
688
|
-
L: 59,
|
|
689
|
-
S: void 0,
|
|
690
|
-
C: (f, a) => f(...a)
|
|
691
|
-
});
|
|
692
691
|
for (const object of objects) {
|
|
693
692
|
const content = object.content;
|
|
694
693
|
if (content instanceof TextV0Type) {
|
|
@@ -699,8 +698,18 @@ var createSubscriptionTrigger = async (ctx, triggerCtx, spec, callback) => {
|
|
|
699
698
|
}
|
|
700
699
|
}
|
|
701
700
|
};
|
|
702
|
-
|
|
703
|
-
|
|
701
|
+
log5.info("subscription", {
|
|
702
|
+
filter
|
|
703
|
+
}, {
|
|
704
|
+
F: __dxlog_file5,
|
|
705
|
+
L: 76,
|
|
706
|
+
S: void 0,
|
|
707
|
+
C: (f, a) => f(...a)
|
|
708
|
+
});
|
|
709
|
+
if (filter) {
|
|
710
|
+
const query = space.db.query(Filter2.typename(filter[0].type, filter[0].props));
|
|
711
|
+
subscriptions.push(query.subscribe(delay ? debounce(update, delay) : update));
|
|
712
|
+
}
|
|
704
713
|
ctx.onDispose(() => {
|
|
705
714
|
subscriptions.forEach((unsubscribe) => unsubscribe());
|
|
706
715
|
});
|
|
@@ -711,7 +720,7 @@ import { CronJob } from "cron";
|
|
|
711
720
|
import { DeferredTask } from "@dxos/async";
|
|
712
721
|
import { log as log6 } from "@dxos/log";
|
|
713
722
|
var __dxlog_file6 = "/home/runner/work/dxos/dxos/packages/core/functions/src/trigger/type/timer-trigger.ts";
|
|
714
|
-
var createTimerTrigger = async (ctx,
|
|
723
|
+
var createTimerTrigger = async (ctx, space, spec, callback) => {
|
|
715
724
|
const task = new DeferredTask(ctx, async () => {
|
|
716
725
|
await callback({});
|
|
717
726
|
});
|
|
@@ -726,12 +735,12 @@ var createTimerTrigger = async (ctx, triggerContext, spec, callback) => {
|
|
|
726
735
|
last = now;
|
|
727
736
|
run++;
|
|
728
737
|
log6.info("tick", {
|
|
729
|
-
space:
|
|
738
|
+
space: space.key.truncate(),
|
|
730
739
|
count: run,
|
|
731
740
|
delta
|
|
732
741
|
}, {
|
|
733
742
|
F: __dxlog_file6,
|
|
734
|
-
L:
|
|
743
|
+
L: 38,
|
|
735
744
|
S: void 0,
|
|
736
745
|
C: (f, a) => f(...a)
|
|
737
746
|
});
|
|
@@ -747,7 +756,7 @@ import { getPort as getPort2 } from "get-port-please";
|
|
|
747
756
|
import http from "@dxos/node-std/http";
|
|
748
757
|
import { log as log7 } from "@dxos/log";
|
|
749
758
|
var __dxlog_file7 = "/home/runner/work/dxos/dxos/packages/core/functions/src/trigger/type/webhook-trigger.ts";
|
|
750
|
-
var createWebhookTrigger = async (ctx,
|
|
759
|
+
var createWebhookTrigger = async (ctx, space, spec, callback) => {
|
|
751
760
|
const server = http.createServer(async (req, res) => {
|
|
752
761
|
if (req.method !== spec.method) {
|
|
753
762
|
res.statusCode = 405;
|
|
@@ -764,7 +773,7 @@ var createWebhookTrigger = async (ctx, _, spec, callback) => {
|
|
|
764
773
|
port
|
|
765
774
|
}, {
|
|
766
775
|
F: __dxlog_file7,
|
|
767
|
-
L:
|
|
776
|
+
L: 41,
|
|
768
777
|
S: void 0,
|
|
769
778
|
C: (f, a) => f(...a)
|
|
770
779
|
});
|
|
@@ -780,7 +789,7 @@ import WebSocket from "ws";
|
|
|
780
789
|
import { sleep, Trigger as Trigger2 } from "@dxos/async";
|
|
781
790
|
import { log as log8 } from "@dxos/log";
|
|
782
791
|
var __dxlog_file8 = "/home/runner/work/dxos/dxos/packages/core/functions/src/trigger/type/websocket-trigger.ts";
|
|
783
|
-
var createWebsocketTrigger = async (ctx,
|
|
792
|
+
var createWebsocketTrigger = async (ctx, space, spec, callback, options = {
|
|
784
793
|
retryDelay: 2,
|
|
785
794
|
maxAttempts: 5
|
|
786
795
|
}) => {
|
|
@@ -795,7 +804,7 @@ var createWebsocketTrigger = async (ctx, triggerCtx, spec, callback, options = {
|
|
|
795
804
|
url
|
|
796
805
|
}, {
|
|
797
806
|
F: __dxlog_file8,
|
|
798
|
-
L:
|
|
807
|
+
L: 40,
|
|
799
808
|
S: void 0,
|
|
800
809
|
C: (f, a) => f(...a)
|
|
801
810
|
});
|
|
@@ -810,7 +819,7 @@ var createWebsocketTrigger = async (ctx, triggerCtx, spec, callback, options = {
|
|
|
810
819
|
code: event.code
|
|
811
820
|
}, {
|
|
812
821
|
F: __dxlog_file8,
|
|
813
|
-
L:
|
|
822
|
+
L: 49,
|
|
814
823
|
S: void 0,
|
|
815
824
|
C: (f, a) => f(...a)
|
|
816
825
|
});
|
|
@@ -820,11 +829,11 @@ var createWebsocketTrigger = async (ctx, triggerCtx, spec, callback, options = {
|
|
|
820
829
|
url
|
|
821
830
|
}, {
|
|
822
831
|
F: __dxlog_file8,
|
|
823
|
-
L:
|
|
832
|
+
L: 54,
|
|
824
833
|
S: void 0,
|
|
825
834
|
C: (f, a) => f(...a)
|
|
826
835
|
});
|
|
827
|
-
await createWebsocketTrigger(ctx,
|
|
836
|
+
await createWebsocketTrigger(ctx, space, spec, callback, options);
|
|
828
837
|
}, options.retryDelay * 1e3);
|
|
829
838
|
}
|
|
830
839
|
open.wake(false);
|
|
@@ -834,7 +843,7 @@ var createWebsocketTrigger = async (ctx, triggerCtx, spec, callback, options = {
|
|
|
834
843
|
url
|
|
835
844
|
}, {
|
|
836
845
|
F: __dxlog_file8,
|
|
837
|
-
L:
|
|
846
|
+
L: 63,
|
|
838
847
|
S: void 0,
|
|
839
848
|
C: (f, a) => f(...a)
|
|
840
849
|
});
|
|
@@ -843,7 +852,7 @@ var createWebsocketTrigger = async (ctx, triggerCtx, spec, callback, options = {
|
|
|
843
852
|
try {
|
|
844
853
|
log8.info("message", void 0, {
|
|
845
854
|
F: __dxlog_file8,
|
|
846
|
-
L:
|
|
855
|
+
L: 68,
|
|
847
856
|
S: void 0,
|
|
848
857
|
C: (f, a) => f(...a)
|
|
849
858
|
});
|
|
@@ -856,7 +865,7 @@ var createWebsocketTrigger = async (ctx, triggerCtx, spec, callback, options = {
|
|
|
856
865
|
url
|
|
857
866
|
}, {
|
|
858
867
|
F: __dxlog_file8,
|
|
859
|
-
L:
|
|
868
|
+
L: 72,
|
|
860
869
|
S: void 0,
|
|
861
870
|
C: (f, a) => f(...a)
|
|
862
871
|
});
|
|
@@ -873,7 +882,7 @@ var createWebsocketTrigger = async (ctx, triggerCtx, spec, callback, options = {
|
|
|
873
882
|
attempt
|
|
874
883
|
}, {
|
|
875
884
|
F: __dxlog_file8,
|
|
876
|
-
L:
|
|
885
|
+
L: 83,
|
|
877
886
|
S: void 0,
|
|
878
887
|
C: (f, a) => f(...a)
|
|
879
888
|
});
|
|
@@ -909,24 +918,24 @@ var TriggerRegistry = class extends Resource2 {
|
|
|
909
918
|
getInactiveTriggers(space) {
|
|
910
919
|
return this._getTriggers(space, (t) => t.activationCtx == null);
|
|
911
920
|
}
|
|
912
|
-
async activate(
|
|
921
|
+
async activate(space, trigger, callback) {
|
|
913
922
|
log9("activate", {
|
|
914
|
-
space:
|
|
923
|
+
space: space.key,
|
|
915
924
|
trigger
|
|
916
925
|
}, {
|
|
917
926
|
F: __dxlog_file9,
|
|
918
|
-
L:
|
|
927
|
+
L: 72,
|
|
919
928
|
S: this,
|
|
920
929
|
C: (f, a) => f(...a)
|
|
921
930
|
});
|
|
922
931
|
const activationCtx = new Context3({
|
|
923
|
-
name: `
|
|
932
|
+
name: `FunctionTrigger-${trigger.function}`
|
|
924
933
|
});
|
|
925
934
|
this._ctx.onDispose(() => activationCtx.dispose());
|
|
926
|
-
const registeredTrigger = this._triggersBySpaceKey.get(
|
|
935
|
+
const registeredTrigger = this._triggersBySpaceKey.get(space.key)?.find((reg) => reg.trigger.id === trigger.id);
|
|
927
936
|
invariant2(registeredTrigger, `Trigger is not registered: ${trigger.function}`, {
|
|
928
937
|
F: __dxlog_file9,
|
|
929
|
-
L:
|
|
938
|
+
L: 77,
|
|
930
939
|
S: this,
|
|
931
940
|
A: [
|
|
932
941
|
"registeredTrigger",
|
|
@@ -936,7 +945,7 @@ var TriggerRegistry = class extends Resource2 {
|
|
|
936
945
|
registeredTrigger.activationCtx = activationCtx;
|
|
937
946
|
try {
|
|
938
947
|
const options = this._options?.[trigger.spec.type];
|
|
939
|
-
await triggerHandlers[trigger.spec.type](activationCtx,
|
|
948
|
+
await triggerHandlers[trigger.spec.type](activationCtx, space, trigger.spec, callback, options);
|
|
940
949
|
} catch (err) {
|
|
941
950
|
delete registeredTrigger.activationCtx;
|
|
942
951
|
throw err;
|
|
@@ -950,7 +959,7 @@ var TriggerRegistry = class extends Resource2 {
|
|
|
950
959
|
space: space.key
|
|
951
960
|
}, {
|
|
952
961
|
F: __dxlog_file9,
|
|
953
|
-
L:
|
|
962
|
+
L: 93,
|
|
954
963
|
S: this,
|
|
955
964
|
C: (f, a) => f(...a)
|
|
956
965
|
});
|
|
@@ -960,25 +969,42 @@ var TriggerRegistry = class extends Resource2 {
|
|
|
960
969
|
if (!space.db.graph.runtimeSchemaRegistry.hasSchema(FunctionTrigger)) {
|
|
961
970
|
space.db.graph.runtimeSchemaRegistry.registerSchema(FunctionTrigger);
|
|
962
971
|
}
|
|
963
|
-
const
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
+
const manifestTriggers = manifest.triggers.map((trigger) => {
|
|
973
|
+
let keys = trigger[ECHO_ATTR_META]?.keys;
|
|
974
|
+
delete trigger[ECHO_ATTR_META];
|
|
975
|
+
if (!keys?.length) {
|
|
976
|
+
keys = [
|
|
977
|
+
foreignKey("manifest", [
|
|
978
|
+
trigger.function,
|
|
979
|
+
trigger.spec.type
|
|
980
|
+
].join(":"))
|
|
981
|
+
];
|
|
982
|
+
}
|
|
983
|
+
return create2(FunctionTrigger, trigger, {
|
|
984
|
+
keys
|
|
985
|
+
});
|
|
972
986
|
});
|
|
987
|
+
const { objects: existing } = await space.db.query(Filter3.schema(FunctionTrigger)).run();
|
|
988
|
+
const { added } = diff2(existing, manifestTriggers, compareForeignKeys);
|
|
973
989
|
added.forEach((trigger) => {
|
|
974
|
-
|
|
975
|
-
|
|
990
|
+
space.db.add(trigger);
|
|
991
|
+
log9.info("added", {
|
|
992
|
+
meta: getMeta(trigger)
|
|
993
|
+
}, {
|
|
994
|
+
F: __dxlog_file9,
|
|
995
|
+
L: 120,
|
|
996
|
+
S: this,
|
|
997
|
+
C: (f, a) => f(...a)
|
|
998
|
+
});
|
|
976
999
|
});
|
|
1000
|
+
if (added.length > 0) {
|
|
1001
|
+
await space.db.flush();
|
|
1002
|
+
}
|
|
977
1003
|
}
|
|
978
1004
|
async _open() {
|
|
979
1005
|
log9.info("open...", void 0, {
|
|
980
1006
|
F: __dxlog_file9,
|
|
981
|
-
L:
|
|
1007
|
+
L: 129,
|
|
982
1008
|
S: this,
|
|
983
1009
|
C: (f, a) => f(...a)
|
|
984
1010
|
});
|
|
@@ -993,78 +1019,89 @@ var TriggerRegistry = class extends Resource2 {
|
|
|
993
1019
|
if (this._ctx.disposed) {
|
|
994
1020
|
break;
|
|
995
1021
|
}
|
|
996
|
-
this._ctx.onDispose(space.db.query(Filter3.schema(FunctionTrigger)).subscribe(async (
|
|
1022
|
+
this._ctx.onDispose(space.db.query(Filter3.schema(FunctionTrigger)).subscribe(async ({ objects: current }) => {
|
|
997
1023
|
log9.info("update", {
|
|
998
1024
|
space: space.key,
|
|
999
|
-
|
|
1025
|
+
registered: registered.length,
|
|
1026
|
+
current: current.length
|
|
1000
1027
|
}, {
|
|
1001
1028
|
F: __dxlog_file9,
|
|
1002
|
-
L:
|
|
1029
|
+
L: 146,
|
|
1003
1030
|
S: this,
|
|
1004
1031
|
C: (f, a) => f(...a)
|
|
1005
1032
|
});
|
|
1006
|
-
await this._handleRemovedTriggers(space,
|
|
1007
|
-
this._handleNewTriggers(space,
|
|
1033
|
+
await this._handleRemovedTriggers(space, current, registered);
|
|
1034
|
+
this._handleNewTriggers(space, current, registered);
|
|
1008
1035
|
}));
|
|
1009
1036
|
}
|
|
1010
1037
|
});
|
|
1011
1038
|
this._ctx.onDispose(() => spaceListSubscription.unsubscribe());
|
|
1039
|
+
log9.info("opened", void 0, {
|
|
1040
|
+
F: __dxlog_file9,
|
|
1041
|
+
L: 155,
|
|
1042
|
+
S: this,
|
|
1043
|
+
C: (f, a) => f(...a)
|
|
1044
|
+
});
|
|
1012
1045
|
}
|
|
1013
1046
|
async _close(_) {
|
|
1014
1047
|
log9.info("close...", void 0, {
|
|
1015
1048
|
F: __dxlog_file9,
|
|
1016
|
-
L:
|
|
1049
|
+
L: 159,
|
|
1017
1050
|
S: this,
|
|
1018
1051
|
C: (f, a) => f(...a)
|
|
1019
1052
|
});
|
|
1020
1053
|
this._triggersBySpaceKey.clear();
|
|
1054
|
+
log9.info("closed", void 0, {
|
|
1055
|
+
F: __dxlog_file9,
|
|
1056
|
+
L: 161,
|
|
1057
|
+
S: this,
|
|
1058
|
+
C: (f, a) => f(...a)
|
|
1059
|
+
});
|
|
1021
1060
|
}
|
|
1022
|
-
_handleNewTriggers(space,
|
|
1023
|
-
const
|
|
1024
|
-
return registered.find((reg) => reg.trigger.id === candidate.id) == null;
|
|
1061
|
+
_handleNewTriggers(space, current, registered) {
|
|
1062
|
+
const added = current.filter((candidate) => {
|
|
1063
|
+
return candidate.enabled && registered.find((reg) => reg.trigger.id === candidate.id) == null;
|
|
1025
1064
|
});
|
|
1026
|
-
if (
|
|
1027
|
-
const newRegisteredTriggers =
|
|
1065
|
+
if (added.length > 0) {
|
|
1066
|
+
const newRegisteredTriggers = added.map((trigger) => ({
|
|
1028
1067
|
trigger
|
|
1029
1068
|
}));
|
|
1030
1069
|
registered.push(...newRegisteredTriggers);
|
|
1031
1070
|
log9.info("added", () => ({
|
|
1032
1071
|
spaceKey: space.key,
|
|
1033
|
-
triggers:
|
|
1072
|
+
triggers: added.map((trigger) => trigger.function)
|
|
1034
1073
|
}), {
|
|
1035
1074
|
F: __dxlog_file9,
|
|
1036
|
-
L:
|
|
1075
|
+
L: 172,
|
|
1037
1076
|
S: this,
|
|
1038
1077
|
C: (f, a) => f(...a)
|
|
1039
1078
|
});
|
|
1040
1079
|
this.registered.emit({
|
|
1041
1080
|
space,
|
|
1042
|
-
triggers:
|
|
1081
|
+
triggers: added
|
|
1043
1082
|
});
|
|
1044
1083
|
}
|
|
1045
1084
|
}
|
|
1046
|
-
async _handleRemovedTriggers(space,
|
|
1085
|
+
async _handleRemovedTriggers(space, current, registered) {
|
|
1047
1086
|
const removed = [];
|
|
1048
1087
|
for (let i = registered.length - 1; i >= 0; i--) {
|
|
1049
|
-
const wasRemoved =
|
|
1088
|
+
const wasRemoved = current.filter((trigger) => trigger.enabled).find((trigger) => trigger.id === registered[i].trigger.id) == null;
|
|
1050
1089
|
if (wasRemoved) {
|
|
1051
|
-
if (removed.length) {
|
|
1052
|
-
log9.info("removed", () => ({
|
|
1053
|
-
spaceKey: space.key,
|
|
1054
|
-
triggers: removed.map((trigger) => trigger.function)
|
|
1055
|
-
}), {
|
|
1056
|
-
F: __dxlog_file9,
|
|
1057
|
-
L: 181,
|
|
1058
|
-
S: this,
|
|
1059
|
-
C: (f, a) => f(...a)
|
|
1060
|
-
});
|
|
1061
|
-
}
|
|
1062
1090
|
const unregistered = registered.splice(i, 1)[0];
|
|
1063
1091
|
await unregistered.activationCtx?.dispose();
|
|
1064
1092
|
removed.push(unregistered.trigger);
|
|
1065
1093
|
}
|
|
1066
1094
|
}
|
|
1067
1095
|
if (removed.length > 0) {
|
|
1096
|
+
log9.info("removed", () => ({
|
|
1097
|
+
spaceKey: space.key,
|
|
1098
|
+
triggers: removed.map((trigger) => trigger.function)
|
|
1099
|
+
}), {
|
|
1100
|
+
F: __dxlog_file9,
|
|
1101
|
+
L: 198,
|
|
1102
|
+
S: this,
|
|
1103
|
+
C: (f, a) => f(...a)
|
|
1104
|
+
});
|
|
1068
1105
|
this.removed.emit({
|
|
1069
1106
|
space,
|
|
1070
1107
|
triggers: removed
|