@dxos/functions 0.5.4 → 0.5.5-main.1aa8b60
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/README.md +1 -1
- package/dist/lib/browser/{chunk-4D4I3YMJ.mjs → chunk-ERWZ4JUZ.mjs} +31 -31
- package/dist/lib/browser/{chunk-4D4I3YMJ.mjs.map → chunk-ERWZ4JUZ.mjs.map} +2 -2
- package/dist/lib/browser/chunk-SXZ5DYJG.mjs +1089 -0
- package/dist/lib/browser/chunk-SXZ5DYJG.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +18 -1076
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +151 -0
- package/dist/lib/browser/testing/index.mjs.map +7 -0
- package/dist/lib/browser/types.mjs +1 -1
- package/dist/lib/node/{chunk-3UYUR5N5.cjs → chunk-BLLSDTKZ.cjs} +34 -34
- package/dist/lib/node/{chunk-3UYUR5N5.cjs.map → chunk-BLLSDTKZ.cjs.map} +2 -2
- package/dist/lib/node/chunk-RPHL3ORN.cjs +1102 -0
- package/dist/lib/node/chunk-RPHL3ORN.cjs.map +7 -0
- package/dist/lib/node/index.cjs +20 -1074
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/testing/index.cjs +172 -0
- package/dist/lib/node/testing/index.cjs.map +7 -0
- package/dist/lib/node/types.cjs +5 -5
- package/dist/lib/node/types.cjs.map +1 -1
- package/dist/types/src/function/function-registry.d.ts +1 -0
- package/dist/types/src/function/function-registry.d.ts.map +1 -1
- package/dist/types/src/runtime/dev-server.d.ts +1 -0
- package/dist/types/src/runtime/dev-server.d.ts.map +1 -1
- package/dist/types/src/testing/index.d.ts +1 -0
- package/dist/types/src/testing/index.d.ts.map +1 -1
- package/dist/types/src/testing/manifest.d.ts +3 -0
- package/dist/types/src/testing/manifest.d.ts.map +1 -0
- package/dist/types/src/testing/plugin-init.d.ts +6 -0
- package/dist/types/src/testing/plugin-init.d.ts.map +1 -0
- package/dist/types/src/testing/setup.d.ts +11 -1
- package/dist/types/src/testing/setup.d.ts.map +1 -1
- package/dist/types/src/testing/util.d.ts +2 -0
- package/dist/types/src/testing/util.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 +27 -38
- package/dist/types/src/types.d.ts.map +1 -1
- package/package.json +24 -15
- package/src/function/function-registry.test.ts +14 -1
- package/src/function/function-registry.ts +10 -0
- package/src/runtime/dev-server.test.ts +42 -24
- package/src/runtime/dev-server.ts +17 -13
- package/src/runtime/scheduler.test.ts +4 -2
- package/src/testing/functions-integration.test.ts +8 -45
- package/src/testing/index.ts +1 -0
- package/src/testing/manifest.ts +15 -0
- package/src/testing/plugin-init.ts +20 -0
- package/src/testing/setup.ts +65 -6
- package/src/testing/types.ts +1 -1
- package/src/testing/util.ts +10 -0
- package/src/trigger/type/websocket-trigger.ts +12 -8
- package/src/types.ts +31 -31
package/README.md
CHANGED
|
@@ -76,7 +76,7 @@ curl http://localhost:7001/dev/hello -X POST -H 'Content-Type: application/json'
|
|
|
76
76
|
|
|
77
77
|
- [Website](https://dxos.org)
|
|
78
78
|
- [Developer Documentation](https://docs.dxos.org)
|
|
79
|
-
- Talk to us on [Discord](https://
|
|
79
|
+
- Talk to us on [Discord](https://dxos.org/discord)
|
|
80
80
|
|
|
81
81
|
## Contributions
|
|
82
82
|
|
|
@@ -16,60 +16,60 @@ import {
|
|
|
16
16
|
|
|
17
17
|
// packages/core/functions/src/types.ts
|
|
18
18
|
import { RawObject, S, TypedObject } from "@dxos/echo-schema";
|
|
19
|
-
var SubscriptionTriggerSchema = S.mutable(S.
|
|
20
|
-
type: S.
|
|
19
|
+
var SubscriptionTriggerSchema = S.mutable(S.Struct({
|
|
20
|
+
type: S.Literal("subscription"),
|
|
21
21
|
// TODO(burdon): Define query DSL (from ECHO).
|
|
22
|
-
filter: S.
|
|
23
|
-
type: S.
|
|
24
|
-
props: S.optional(S.
|
|
22
|
+
filter: S.Array(S.Struct({
|
|
23
|
+
type: S.String,
|
|
24
|
+
props: S.optional(S.Record(S.String, S.Any))
|
|
25
25
|
})),
|
|
26
|
-
options: S.optional(S.
|
|
26
|
+
options: S.optional(S.Struct({
|
|
27
27
|
// Watch changes to object (not just creation).
|
|
28
|
-
deep: S.optional(S.
|
|
28
|
+
deep: S.optional(S.Boolean),
|
|
29
29
|
// Debounce changes (delay in ms).
|
|
30
|
-
delay: S.optional(S.
|
|
30
|
+
delay: S.optional(S.Number)
|
|
31
31
|
}))
|
|
32
32
|
}));
|
|
33
|
-
var TimerTriggerSchema = S.mutable(S.
|
|
34
|
-
type: S.
|
|
35
|
-
cron: S.
|
|
33
|
+
var TimerTriggerSchema = S.mutable(S.Struct({
|
|
34
|
+
type: S.Literal("timer"),
|
|
35
|
+
cron: S.String
|
|
36
36
|
}));
|
|
37
|
-
var WebhookTriggerSchema = S.mutable(S.
|
|
38
|
-
type: S.
|
|
39
|
-
method: S.
|
|
37
|
+
var WebhookTriggerSchema = S.mutable(S.Struct({
|
|
38
|
+
type: S.Literal("webhook"),
|
|
39
|
+
method: S.String,
|
|
40
40
|
// Assigned port.
|
|
41
|
-
port: S.optional(S.
|
|
41
|
+
port: S.optional(S.Number)
|
|
42
42
|
}));
|
|
43
|
-
var WebsocketTriggerSchema = S.mutable(S.
|
|
44
|
-
type: S.
|
|
45
|
-
url: S.
|
|
46
|
-
init: S.optional(S.
|
|
43
|
+
var WebsocketTriggerSchema = S.mutable(S.Struct({
|
|
44
|
+
type: S.Literal("websocket"),
|
|
45
|
+
url: S.String,
|
|
46
|
+
init: S.optional(S.Record(S.String, S.Any))
|
|
47
47
|
}));
|
|
48
|
-
var TriggerSpecSchema = S.
|
|
48
|
+
var TriggerSpecSchema = S.Union(TimerTriggerSchema, WebhookTriggerSchema, WebsocketTriggerSchema, SubscriptionTriggerSchema);
|
|
49
49
|
var FunctionDef = class extends TypedObject({
|
|
50
50
|
typename: "dxos.org/type/FunctionDef",
|
|
51
51
|
version: "0.1.0"
|
|
52
52
|
})({
|
|
53
|
-
uri: S.
|
|
54
|
-
description: S.optional(S.
|
|
55
|
-
route: S.
|
|
56
|
-
handler: S.
|
|
53
|
+
uri: S.String,
|
|
54
|
+
description: S.optional(S.String),
|
|
55
|
+
route: S.String,
|
|
56
|
+
handler: S.String
|
|
57
57
|
}) {
|
|
58
58
|
};
|
|
59
59
|
var FunctionTrigger = class extends TypedObject({
|
|
60
60
|
typename: "dxos.org/type/FunctionTrigger",
|
|
61
61
|
version: "0.1.0"
|
|
62
62
|
})({
|
|
63
|
-
enabled: S.optional(S.
|
|
64
|
-
function: S.
|
|
63
|
+
enabled: S.optional(S.Boolean),
|
|
64
|
+
function: S.String.pipe(S.description("Function URI.")),
|
|
65
65
|
// The `meta` property is merged into the event data passed to the function.
|
|
66
|
-
meta: S.optional(S.mutable(S.
|
|
66
|
+
meta: S.optional(S.mutable(S.Any)),
|
|
67
67
|
spec: TriggerSpecSchema
|
|
68
68
|
}) {
|
|
69
69
|
};
|
|
70
|
-
var FunctionManifestSchema = S.
|
|
71
|
-
functions: S.optional(S.mutable(S.
|
|
72
|
-
triggers: S.optional(S.mutable(S.
|
|
70
|
+
var FunctionManifestSchema = S.Struct({
|
|
71
|
+
functions: S.optional(S.mutable(S.Array(RawObject(FunctionDef)))),
|
|
72
|
+
triggers: S.optional(S.mutable(S.Array(RawObject(FunctionTrigger))))
|
|
73
73
|
});
|
|
74
74
|
var FUNCTION_SCHEMA = [
|
|
75
75
|
FunctionDef,
|
|
@@ -83,4 +83,4 @@ export {
|
|
|
83
83
|
FunctionManifestSchema,
|
|
84
84
|
FUNCTION_SCHEMA
|
|
85
85
|
};
|
|
86
|
-
//# sourceMappingURL=chunk-
|
|
86
|
+
//# sourceMappingURL=chunk-ERWZ4JUZ.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/types.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { RawObject, S, TypedObject } from '@dxos/echo-schema';\n\n/**\n * Type discriminator for TriggerSpec.\n * Every spec has a type field of type FunctionTriggerType that we can use to understand which\n * type we're working with.\n * https://www.typescriptlang.org/docs/handbook/2/narrowing.html#discriminated-unions\n */\nexport type FunctionTriggerType = 'subscription' | 'timer' | 'webhook' | 'websocket';\n\nconst SubscriptionTriggerSchema = S.mutable(\n S.
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { RawObject, S, TypedObject } from '@dxos/echo-schema';\n\n/**\n * Type discriminator for TriggerSpec.\n * Every spec has a type field of type FunctionTriggerType that we can use to understand which\n * type we're working with.\n * https://www.typescriptlang.org/docs/handbook/2/narrowing.html#discriminated-unions\n */\nexport type FunctionTriggerType = 'subscription' | 'timer' | 'webhook' | 'websocket';\n\nconst SubscriptionTriggerSchema = S.mutable(\n S.Struct({\n type: S.Literal('subscription'),\n // TODO(burdon): Define query DSL (from ECHO).\n filter: S.Array(\n S.Struct({\n type: S.String,\n props: S.optional(S.Record(S.String, S.Any)),\n }),\n ),\n options: S.optional(\n S.Struct({\n // Watch changes to object (not just creation).\n deep: S.optional(S.Boolean),\n // Debounce changes (delay in ms).\n delay: S.optional(S.Number),\n }),\n ),\n }),\n);\n\nexport type SubscriptionTrigger = S.Schema.Type<typeof SubscriptionTriggerSchema>;\n\nconst TimerTriggerSchema = S.mutable(\n S.Struct({\n type: S.Literal('timer'),\n cron: S.String,\n }),\n);\n\nexport type TimerTrigger = S.Schema.Type<typeof TimerTriggerSchema>;\n\nconst WebhookTriggerSchema = S.mutable(\n S.Struct({\n type: S.Literal('webhook'),\n method: S.String,\n // Assigned port.\n port: S.optional(S.Number),\n }),\n);\n\nexport type WebhookTrigger = S.Schema.Type<typeof WebhookTriggerSchema>;\n\nconst WebsocketTriggerSchema = S.mutable(\n S.Struct({\n type: S.Literal('websocket'),\n url: S.String,\n init: S.optional(S.Record(S.String, S.Any)),\n }),\n);\n\nexport type WebsocketTrigger = S.Schema.Type<typeof WebsocketTriggerSchema>;\n\nconst TriggerSpecSchema = S.Union(\n TimerTriggerSchema,\n WebhookTriggerSchema,\n WebsocketTriggerSchema,\n SubscriptionTriggerSchema,\n);\n\nexport type TriggerSpec = TimerTrigger | WebhookTrigger | WebsocketTrigger | SubscriptionTrigger;\n\n/**\n * Function definition.\n */\nexport class FunctionDef extends TypedObject({\n typename: 'dxos.org/type/FunctionDef',\n version: '0.1.0',\n})({\n uri: S.String,\n description: S.optional(S.String),\n route: S.String,\n handler: S.String,\n}) {}\n\n/**\n * Function trigger.\n */\nexport class FunctionTrigger extends TypedObject({\n typename: 'dxos.org/type/FunctionTrigger',\n version: '0.1.0',\n})({\n enabled: S.optional(S.Boolean),\n function: S.String.pipe(S.description('Function URI.')),\n // The `meta` property is merged into the event data passed to the function.\n meta: S.optional(S.mutable(S.Any)),\n spec: TriggerSpecSchema,\n}) {}\n\n/**\n * Function manifest file.\n */\nexport const FunctionManifestSchema = S.Struct({\n functions: S.optional(S.mutable(S.Array(RawObject(FunctionDef)))),\n triggers: S.optional(S.mutable(S.Array(RawObject(FunctionTrigger)))),\n});\n\nexport type FunctionManifest = S.Schema.Type<typeof FunctionManifestSchema>;\n\n// TODO(burdon): Standards?\nexport const FUNCTION_SCHEMA = [FunctionDef, FunctionTrigger];\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;AAIA,SAASA,WAAWC,GAAGC,mBAAmB;AAU1C,IAAMC,4BAA4BC,EAAEC,QAClCD,EAAEE,OAAO;EACPC,MAAMH,EAAEI,QAAQ,cAAA;;EAEhBC,QAAQL,EAAEM,MACRN,EAAEE,OAAO;IACPC,MAAMH,EAAEO;IACRC,OAAOR,EAAES,SAAST,EAAEU,OAAOV,EAAEO,QAAQP,EAAEW,GAAG,CAAA;EAC5C,CAAA,CAAA;EAEFC,SAASZ,EAAES,SACTT,EAAEE,OAAO;;IAEPW,MAAMb,EAAES,SAAST,EAAEc,OAAO;;IAE1BC,OAAOf,EAAES,SAAST,EAAEgB,MAAM;EAC5B,CAAA,CAAA;AAEJ,CAAA,CAAA;AAKF,IAAMC,qBAAqBjB,EAAEC,QAC3BD,EAAEE,OAAO;EACPC,MAAMH,EAAEI,QAAQ,OAAA;EAChBc,MAAMlB,EAAEO;AACV,CAAA,CAAA;AAKF,IAAMY,uBAAuBnB,EAAEC,QAC7BD,EAAEE,OAAO;EACPC,MAAMH,EAAEI,QAAQ,SAAA;EAChBgB,QAAQpB,EAAEO;;EAEVc,MAAMrB,EAAES,SAAST,EAAEgB,MAAM;AAC3B,CAAA,CAAA;AAKF,IAAMM,yBAAyBtB,EAAEC,QAC/BD,EAAEE,OAAO;EACPC,MAAMH,EAAEI,QAAQ,WAAA;EAChBmB,KAAKvB,EAAEO;EACPiB,MAAMxB,EAAES,SAAST,EAAEU,OAAOV,EAAEO,QAAQP,EAAEW,GAAG,CAAA;AAC3C,CAAA,CAAA;AAKF,IAAMc,oBAAoBzB,EAAE0B,MAC1BT,oBACAE,sBACAG,wBACAvB,yBAAAA;AAQK,IAAM4B,cAAN,cAA0BC,YAAY;EAC3CC,UAAU;EACVC,SAAS;AACX,CAAA,EAAG;EACDC,KAAK/B,EAAEO;EACPyB,aAAahC,EAAES,SAAST,EAAEO,MAAM;EAChC0B,OAAOjC,EAAEO;EACT2B,SAASlC,EAAEO;AACb,CAAA,EAAA;AAAI;AAKG,IAAM4B,kBAAN,cAA8BP,YAAY;EAC/CC,UAAU;EACVC,SAAS;AACX,CAAA,EAAG;EACDM,SAASpC,EAAES,SAAST,EAAEc,OAAO;EAC7BuB,UAAUrC,EAAEO,OAAO+B,KAAKtC,EAAEgC,YAAY,eAAA,CAAA;;EAEtCO,MAAMvC,EAAES,SAAST,EAAEC,QAAQD,EAAEW,GAAG,CAAA;EAChC6B,MAAMf;AACR,CAAA,EAAA;AAAI;AAKG,IAAMgB,yBAAyBzC,EAAEE,OAAO;EAC7CwC,WAAW1C,EAAES,SAAST,EAAEC,QAAQD,EAAEM,MAAMqC,UAAUhB,WAAAA,CAAAA,CAAAA,CAAAA;EAClDiB,UAAU5C,EAAES,SAAST,EAAEC,QAAQD,EAAEM,MAAMqC,UAAUR,eAAAA,CAAAA,CAAAA,CAAAA;AACnD,CAAA;AAKO,IAAMU,kBAAkB;EAAClB;EAAaQ;;",
|
|
6
|
-
"names": ["RawObject", "S", "TypedObject", "SubscriptionTriggerSchema", "S", "mutable", "
|
|
6
|
+
"names": ["RawObject", "S", "TypedObject", "SubscriptionTriggerSchema", "S", "mutable", "Struct", "type", "Literal", "filter", "Array", "String", "props", "optional", "Record", "Any", "options", "deep", "Boolean", "delay", "Number", "TimerTriggerSchema", "cron", "WebhookTriggerSchema", "method", "port", "WebsocketTriggerSchema", "url", "init", "TriggerSpecSchema", "Union", "FunctionDef", "TypedObject", "typename", "version", "uri", "description", "route", "handler", "FunctionTrigger", "enabled", "function", "pipe", "meta", "spec", "FunctionManifestSchema", "functions", "RawObject", "triggers", "FUNCTION_SCHEMA"]
|
|
7
7
|
}
|