@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,15 +5,16 @@
|
|
|
5
5
|
import { getPort } from 'get-port-please';
|
|
6
6
|
import http from 'node:http';
|
|
7
7
|
|
|
8
|
+
import { type Space } from '@dxos/client/echo';
|
|
8
9
|
import { type Context } from '@dxos/context';
|
|
9
10
|
import { log } from '@dxos/log';
|
|
10
11
|
|
|
11
12
|
import type { WebhookTrigger } from '../../types';
|
|
12
|
-
import { type TriggerCallback, type
|
|
13
|
+
import { type TriggerCallback, type TriggerFactory } from '../trigger-registry';
|
|
13
14
|
|
|
14
15
|
export const createWebhookTrigger: TriggerFactory<WebhookTrigger> = async (
|
|
15
16
|
ctx: Context,
|
|
16
|
-
|
|
17
|
+
space: Space,
|
|
17
18
|
spec: WebhookTrigger,
|
|
18
19
|
callback: TriggerCallback,
|
|
19
20
|
) => {
|
|
@@ -5,11 +5,12 @@
|
|
|
5
5
|
import WebSocket from 'ws';
|
|
6
6
|
|
|
7
7
|
import { sleep, Trigger } from '@dxos/async';
|
|
8
|
+
import { type Space } from '@dxos/client/echo';
|
|
8
9
|
import { type Context } from '@dxos/context';
|
|
9
10
|
import { log } from '@dxos/log';
|
|
10
11
|
|
|
11
12
|
import { type WebsocketTrigger } from '../../types';
|
|
12
|
-
import { type TriggerCallback, type
|
|
13
|
+
import { type TriggerCallback, type TriggerFactory } from '../trigger-registry';
|
|
13
14
|
|
|
14
15
|
interface WebsocketTriggerOptions {
|
|
15
16
|
retryDelay: number;
|
|
@@ -22,7 +23,7 @@ interface WebsocketTriggerOptions {
|
|
|
22
23
|
*/
|
|
23
24
|
export const createWebsocketTrigger: TriggerFactory<WebsocketTrigger, WebsocketTriggerOptions> = async (
|
|
24
25
|
ctx: Context,
|
|
25
|
-
|
|
26
|
+
space: Space,
|
|
26
27
|
spec: WebsocketTrigger,
|
|
27
28
|
callback: TriggerCallback,
|
|
28
29
|
options: WebsocketTriggerOptions = { retryDelay: 2, maxAttempts: 5 },
|
|
@@ -51,7 +52,7 @@ export const createWebsocketTrigger: TriggerFactory<WebsocketTrigger, WebsocketT
|
|
|
51
52
|
if (event.code === 1006) {
|
|
52
53
|
setTimeout(async () => {
|
|
53
54
|
log.info(`reconnecting in ${options.retryDelay}s...`, { url });
|
|
54
|
-
await createWebsocketTrigger(ctx,
|
|
55
|
+
await createWebsocketTrigger(ctx, space, spec, callback, options);
|
|
55
56
|
}, options.retryDelay * 1_000);
|
|
56
57
|
}
|
|
57
58
|
|
package/src/types.ts
CHANGED
|
@@ -84,17 +84,20 @@ export class FunctionDef extends TypedObject({
|
|
|
84
84
|
uri: S.string,
|
|
85
85
|
description: S.optional(S.string),
|
|
86
86
|
route: S.string,
|
|
87
|
-
// TODO(burdon): NPM/GitHub/Docker/CF URL?
|
|
88
87
|
handler: S.string,
|
|
89
88
|
}) {}
|
|
90
89
|
|
|
90
|
+
/**
|
|
91
|
+
* Function trigger.
|
|
92
|
+
*/
|
|
91
93
|
export class FunctionTrigger extends TypedObject({
|
|
92
94
|
typename: 'dxos.org/type/FunctionTrigger',
|
|
93
95
|
version: '0.1.0',
|
|
94
96
|
})({
|
|
97
|
+
enabled: S.optional(S.boolean),
|
|
95
98
|
function: S.string.pipe(S.description('Function URI.')),
|
|
96
|
-
//
|
|
97
|
-
meta: S.optional(S.
|
|
99
|
+
// The `meta` property is merged into the event data passed to the function.
|
|
100
|
+
meta: S.optional(S.mutable(S.any)),
|
|
98
101
|
spec: TriggerSpecSchema,
|
|
99
102
|
}) {}
|
|
100
103
|
|