@dxos/functions 0.5.3-main.bc67fdb → 0.5.3-main.c8ad1bb

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.
Files changed (73) hide show
  1. package/dist/lib/browser/index.mjs +642 -424
  2. package/dist/lib/browser/index.mjs.map +4 -4
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/lib/node/index.cjs +627 -421
  5. package/dist/lib/node/index.cjs.map +4 -4
  6. package/dist/lib/node/meta.json +1 -1
  7. package/dist/types/src/index.d.ts +2 -0
  8. package/dist/types/src/index.d.ts.map +1 -1
  9. package/dist/types/src/registry/function-registry.d.ts +24 -0
  10. package/dist/types/src/registry/function-registry.d.ts.map +1 -0
  11. package/dist/types/src/registry/function-registry.test.d.ts +2 -0
  12. package/dist/types/src/registry/function-registry.test.d.ts.map +1 -0
  13. package/dist/types/src/registry/index.d.ts +2 -0
  14. package/dist/types/src/registry/index.d.ts.map +1 -0
  15. package/dist/types/src/runtime/dev-server.d.ts +7 -10
  16. package/dist/types/src/runtime/dev-server.d.ts.map +1 -1
  17. package/dist/types/src/runtime/scheduler.d.ts +10 -59
  18. package/dist/types/src/runtime/scheduler.d.ts.map +1 -1
  19. package/dist/types/src/testing/functions-integration.test.d.ts +2 -0
  20. package/dist/types/src/testing/functions-integration.test.d.ts.map +1 -0
  21. package/dist/types/src/testing/index.d.ts +4 -0
  22. package/dist/types/src/testing/index.d.ts.map +1 -0
  23. package/dist/types/src/testing/setup.d.ts +5 -0
  24. package/dist/types/src/testing/setup.d.ts.map +1 -0
  25. package/dist/types/src/testing/test/handler.d.ts +1 -0
  26. package/dist/types/src/testing/test/handler.d.ts.map +1 -1
  27. package/dist/types/src/testing/types.d.ts +9 -0
  28. package/dist/types/src/testing/types.d.ts.map +1 -0
  29. package/dist/types/src/testing/util.d.ts +3 -0
  30. package/dist/types/src/testing/util.d.ts.map +1 -0
  31. package/dist/types/src/trigger/index.d.ts +2 -0
  32. package/dist/types/src/trigger/index.d.ts.map +1 -0
  33. package/dist/types/src/trigger/trigger-registry.d.ts +40 -0
  34. package/dist/types/src/trigger/trigger-registry.d.ts.map +1 -0
  35. package/dist/types/src/trigger/trigger-registry.test.d.ts +2 -0
  36. package/dist/types/src/trigger/trigger-registry.test.d.ts.map +1 -0
  37. package/dist/types/src/trigger/type/index.d.ts +5 -0
  38. package/dist/types/src/trigger/type/index.d.ts.map +1 -0
  39. package/dist/types/src/trigger/type/subscription-trigger.d.ts +4 -0
  40. package/dist/types/src/trigger/type/subscription-trigger.d.ts.map +1 -0
  41. package/dist/types/src/trigger/type/timer-trigger.d.ts +4 -0
  42. package/dist/types/src/trigger/type/timer-trigger.d.ts.map +1 -0
  43. package/dist/types/src/trigger/type/webhook-trigger.d.ts +4 -0
  44. package/dist/types/src/trigger/type/webhook-trigger.d.ts.map +1 -0
  45. package/dist/types/src/trigger/type/websocket-trigger.d.ts +13 -0
  46. package/dist/types/src/trigger/type/websocket-trigger.d.ts.map +1 -0
  47. package/dist/types/src/types.d.ts +118 -112
  48. package/dist/types/src/types.d.ts.map +1 -1
  49. package/package.json +16 -13
  50. package/schema/functions.json +121 -107
  51. package/src/index.ts +2 -0
  52. package/src/registry/function-registry.test.ts +105 -0
  53. package/src/registry/function-registry.ts +84 -0
  54. package/src/registry/index.ts +5 -0
  55. package/src/runtime/dev-server.test.ts +15 -35
  56. package/src/runtime/dev-server.ts +36 -18
  57. package/src/runtime/scheduler.test.ts +54 -75
  58. package/src/runtime/scheduler.ts +58 -298
  59. package/src/testing/functions-integration.test.ts +99 -0
  60. package/src/testing/index.ts +7 -0
  61. package/src/testing/setup.ts +45 -0
  62. package/src/testing/test/handler.ts +8 -2
  63. package/src/testing/types.ts +9 -0
  64. package/src/testing/util.ts +16 -0
  65. package/src/trigger/index.ts +5 -0
  66. package/src/trigger/trigger-registry.test.ts +229 -0
  67. package/src/trigger/trigger-registry.ts +176 -0
  68. package/src/trigger/type/index.ts +8 -0
  69. package/src/trigger/type/subscription-trigger.ts +73 -0
  70. package/src/trigger/type/timer-trigger.ts +44 -0
  71. package/src/trigger/type/webhook-trigger.ts +47 -0
  72. package/src/trigger/type/websocket-trigger.ts +91 -0
  73. package/src/types.ts +56 -42
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/testing/util.ts"],"names":[],"mappings":"AAIA,OAAO,EAAU,KAAK,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAKvD,eAAO,MAAM,cAAc,UAAiB,KAAK,OAAO,MAAM,kBAM7D,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './trigger-registry';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/trigger/index.ts"],"names":[],"mappings":"AAIA,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,40 @@
1
+ import { Event } from '@dxos/async';
2
+ import { type Client } from '@dxos/client';
3
+ import { type Space } from '@dxos/client/echo';
4
+ import { Context, Resource } from '@dxos/context';
5
+ import { type FunctionManifest, FunctionTrigger, type FunctionTriggerType, type TriggerSpec } from '../types';
6
+ type ResponseCode = number;
7
+ export type TriggerCallback = (args: object) => Promise<ResponseCode>;
8
+ export type TriggerContext = {
9
+ space: Space;
10
+ };
11
+ export type TriggerFactory<Spec extends TriggerSpec, Options = any> = (ctx: Context, context: TriggerContext, spec: Spec, callback: TriggerCallback, options?: Options) => Promise<void>;
12
+ export type TriggerHandlerMap = {
13
+ [type in FunctionTriggerType]: TriggerFactory<any>;
14
+ };
15
+ export type TriggerEvent = {
16
+ space: Space;
17
+ triggers: FunctionTrigger[];
18
+ };
19
+ export declare class TriggerRegistry extends Resource {
20
+ private readonly _client;
21
+ private readonly _options?;
22
+ private readonly _triggersBySpaceKey;
23
+ readonly registered: Event<TriggerEvent>;
24
+ readonly removed: Event<TriggerEvent>;
25
+ constructor(_client: Client, _options?: TriggerHandlerMap | undefined);
26
+ getActiveTriggers(space: Space): FunctionTrigger[];
27
+ getInactiveTriggers(space: Space): FunctionTrigger[];
28
+ activate(triggerCtx: TriggerContext, trigger: FunctionTrigger, callback: TriggerCallback): Promise<void>;
29
+ /**
30
+ * Loads triggers from the manifest into the space.
31
+ */
32
+ register(space: Space, manifest: FunctionManifest): Promise<void>;
33
+ protected _open(): Promise<void>;
34
+ protected _close(_: Context): Promise<void>;
35
+ private _handleNewTriggers;
36
+ private _handleRemovedTriggers;
37
+ private _getTriggers;
38
+ }
39
+ export {};
40
+ //# sourceMappingURL=trigger-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trigger-registry.d.ts","sourceRoot":"","sources":["../../../../src/trigger/trigger-registry.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAkB,KAAK,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAOlD,OAAO,EAAE,KAAK,gBAAgB,EAAE,eAAe,EAAE,KAAK,mBAAmB,EAAE,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AAE9G,KAAK,YAAY,GAAG,MAAM,CAAC;AAE3B,MAAM,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;AAEtE,MAAM,MAAM,cAAc,GAAG;IAAE,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC;AAG9C,MAAM,MAAM,cAAc,CAAC,IAAI,SAAS,WAAW,EAAE,OAAO,GAAG,GAAG,IAAI,CACpE,GAAG,EAAE,OAAO,EACZ,OAAO,EAAE,cAAc,EACvB,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,eAAe,EACzB,OAAO,CAAC,EAAE,OAAO,KACd,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnB,MAAM,MAAM,iBAAiB,GAAG;KAAG,IAAI,IAAI,mBAAmB,GAAG,cAAc,CAAC,GAAG,CAAC;CAAE,CAAC;AASvF,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B,CAAC;AAOF,qBAAa,eAAgB,SAAQ,QAAQ;IAOzC,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAP5B,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAkE;IAEtG,SAAgB,UAAU,sBAA6B;IACvD,SAAgB,OAAO,sBAA6B;gBAGjC,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,+BAAmB;IAKxC,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,eAAe,EAAE;IAIlD,mBAAmB,CAAC,KAAK,EAAE,KAAK,GAAG,eAAe,EAAE;IAIrD,QAAQ,CAAC,UAAU,EAAE,cAAc,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB9G;;OAEG;IACU,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;cAerD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;cAyBtB,MAAM,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1D,OAAO,CAAC,kBAAkB;YAaZ,sBAAsB;IAqBpC,OAAO,CAAC,YAAY;CAIrB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=trigger-registry.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trigger-registry.test.d.ts","sourceRoot":"","sources":["../../../../src/trigger/trigger-registry.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ export * from './subscription-trigger';
2
+ export * from './timer-trigger';
3
+ export * from './webhook-trigger';
4
+ export * from './websocket-trigger';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/trigger/type/index.ts"],"names":[],"mappings":"AAIA,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { SubscriptionTrigger } from '../../types';
2
+ import { type TriggerFactory } from '../trigger-registry';
3
+ export declare const createSubscriptionTrigger: TriggerFactory<SubscriptionTrigger>;
4
+ //# sourceMappingURL=subscription-trigger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscription-trigger.d.ts","sourceRoot":"","sources":["../../../../../src/trigger/type/subscription-trigger.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAA6C,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErG,eAAO,MAAM,yBAAyB,EAAE,cAAc,CAAC,mBAAmB,CA2DzE,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { TimerTrigger } from '../../types';
2
+ import { type TriggerFactory } from '../trigger-registry';
3
+ export declare const createTimerTrigger: TriggerFactory<TimerTrigger>;
4
+ //# sourceMappingURL=timer-trigger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timer-trigger.d.ts","sourceRoot":"","sources":["../../../../../src/trigger/type/timer-trigger.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAA6C,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErG,eAAO,MAAM,kBAAkB,EAAE,cAAc,CAAC,YAAY,CA8B3D,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { WebhookTrigger } from '../../types';
2
+ import { type TriggerFactory } from '../trigger-registry';
3
+ export declare const createWebhookTrigger: TriggerFactory<WebhookTrigger>;
4
+ //# sourceMappingURL=webhook-trigger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook-trigger.d.ts","sourceRoot":"","sources":["../../../../../src/trigger/type/webhook-trigger.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAA6C,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErG,eAAO,MAAM,oBAAoB,EAAE,cAAc,CAAC,cAAc,CAiC/D,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { type WebsocketTrigger } from '../../types';
2
+ import { type TriggerFactory } from '../trigger-registry';
3
+ interface WebsocketTriggerOptions {
4
+ retryDelay: number;
5
+ maxAttempts: number;
6
+ }
7
+ /**
8
+ * Websocket.
9
+ * NOTE: The port must be unique, so the same hook cannot be used for multiple spaces.
10
+ */
11
+ export declare const createWebsocketTrigger: TriggerFactory<WebsocketTrigger, WebsocketTriggerOptions>;
12
+ export {};
13
+ //# sourceMappingURL=websocket-trigger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-trigger.d.ts","sourceRoot":"","sources":["../../../../../src/trigger/type/websocket-trigger.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAA6C,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErG,UAAU,uBAAuB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,cAAc,CAAC,gBAAgB,EAAE,uBAAuB,CAoE5F,CAAC"}
@@ -1,21 +1,13 @@
1
- import * as S from '@effect/schema/Schema';
2
- declare const TimerTriggerSchema: S.struct<{
3
- cron: S.$string;
4
- }>;
5
- declare const WebhookTriggerSchema: S.mutable<S.struct<{
6
- method: S.$string;
7
- port: S.PropertySignature<"?:", number | undefined, never, "?:", number | undefined, never>;
8
- }>>;
9
- declare const WebsocketTriggerSchema: S.struct<{
10
- url: S.$string;
11
- init: S.PropertySignature<"?:", {
12
- readonly [x: string]: any;
13
- } | undefined, never, "?:", {
14
- readonly [x: string]: any;
15
- } | undefined, never>;
16
- }>;
1
+ import { S } from '@dxos/echo-schema';
2
+ /**
3
+ * Type discriminator for TriggerSpec.
4
+ * Every spec has a type field of type FunctionTriggerType that we can use to understand which
5
+ * type we're working with.
6
+ * https://www.typescriptlang.org/docs/handbook/2/narrowing.html#discriminated-unions
7
+ */
8
+ export type FunctionTriggerType = 'subscription' | 'timer' | 'webhook' | 'websocket';
17
9
  declare const SubscriptionTriggerSchema: S.struct<{
18
- spaceKey: S.PropertySignature<"?:", string | undefined, never, "?:", string | undefined, never>;
10
+ type: S.literal<["subscription"]>;
19
11
  filter: S.array<S.struct<{
20
12
  type: S.$string;
21
13
  props: S.PropertySignature<"?:", {
@@ -32,150 +24,164 @@ declare const SubscriptionTriggerSchema: S.struct<{
32
24
  readonly delay?: number | undefined;
33
25
  } | undefined, never>;
34
26
  }>;
35
- declare const FunctionTriggerSchema: S.struct<{
36
- function: S.$string;
37
- meta: S.PropertySignature<"?:", {
27
+ export type SubscriptionTrigger = S.Schema.Type<typeof SubscriptionTriggerSchema>;
28
+ declare const TimerTriggerSchema: S.struct<{
29
+ type: S.literal<["timer"]>;
30
+ cron: S.$string;
31
+ }>;
32
+ export type TimerTrigger = S.Schema.Type<typeof TimerTriggerSchema>;
33
+ declare const WebhookTriggerSchema: S.mutable<S.struct<{
34
+ type: S.literal<["webhook"]>;
35
+ method: S.$string;
36
+ port: S.PropertySignature<"?:", number | undefined, never, "?:", number | undefined, never>;
37
+ }>>;
38
+ export type WebhookTrigger = S.Schema.Type<typeof WebhookTriggerSchema>;
39
+ declare const WebsocketTriggerSchema: S.struct<{
40
+ type: S.literal<["websocket"]>;
41
+ url: S.$string;
42
+ init: S.PropertySignature<"?:", {
38
43
  readonly [x: string]: any;
39
44
  } | undefined, never, "?:", {
40
45
  readonly [x: string]: any;
41
46
  } | undefined, never>;
42
- timer: S.PropertySignature<"?:", {
43
- readonly cron: string;
44
- } | undefined, never, "?:", {
45
- readonly cron: string;
46
- } | undefined, never>;
47
- webhook: S.PropertySignature<"?:", {
48
- port?: number | undefined;
49
- method: string;
50
- } | undefined, never, "?:", {
51
- method: string;
52
- port?: number | undefined;
53
- } | undefined, never>;
54
- websocket: S.PropertySignature<"?:", {
55
- readonly url: string;
56
- readonly init?: {
57
- readonly [x: string]: any;
58
- } | undefined;
59
- } | undefined, never, "?:", {
60
- readonly url: string;
61
- readonly init?: {
62
- readonly [x: string]: any;
63
- } | undefined;
64
- } | undefined, never>;
65
- subscription: S.PropertySignature<"?:", {
47
+ }>;
48
+ export type WebsocketTrigger = S.Schema.Type<typeof WebsocketTriggerSchema>;
49
+ export type TriggerSpec = TimerTrigger | WebhookTrigger | WebsocketTrigger | SubscriptionTrigger;
50
+ declare const FunctionDef_base: import("@dxos/echo-schema").EchoSchemaClass<{
51
+ handler: string;
52
+ uri: string;
53
+ description?: string | undefined;
54
+ route: string;
55
+ } & {
56
+ id: string;
57
+ }>;
58
+ /**
59
+ * Function definition.
60
+ */
61
+ export declare class FunctionDef extends FunctionDef_base {
62
+ }
63
+ declare const FunctionTrigger_base: import("@dxos/echo-schema").EchoSchemaClass<{
64
+ function: string;
65
+ meta?: {
66
+ readonly [x: string]: any;
67
+ } | undefined;
68
+ spec: {
66
69
  readonly filter: readonly {
67
70
  readonly type: string;
68
71
  readonly props?: {
69
72
  readonly [x: string]: any;
70
73
  } | undefined;
71
74
  }[];
72
- readonly spaceKey?: string | undefined;
75
+ readonly type: "subscription";
73
76
  readonly options?: {
74
77
  readonly deep?: boolean | undefined;
75
78
  readonly delay?: number | undefined;
76
79
  } | undefined;
77
- } | undefined, never, "?:", {
78
- readonly filter: readonly {
79
- readonly type: string;
80
- readonly props?: {
81
- readonly [x: string]: any;
82
- } | undefined;
83
- }[];
84
- readonly spaceKey?: string | undefined;
85
- readonly options?: {
86
- readonly deep?: boolean | undefined;
87
- readonly delay?: number | undefined;
80
+ } | {
81
+ readonly type: "timer";
82
+ readonly cron: string;
83
+ } | {
84
+ port?: number | undefined;
85
+ type: "webhook";
86
+ method: string;
87
+ } | {
88
+ readonly type: "websocket";
89
+ readonly url: string;
90
+ readonly init?: {
91
+ readonly [x: string]: any;
88
92
  } | undefined;
89
- } | undefined, never>;
90
- }>;
91
- export type FunctionTrigger = S.Schema.Type<typeof FunctionTriggerSchema>;
92
- export type TimerTrigger = S.Schema.Type<typeof TimerTriggerSchema>;
93
- export type WebhookTrigger = S.Schema.Type<typeof WebhookTriggerSchema>;
94
- export type WebsocketTrigger = S.Schema.Type<typeof WebsocketTriggerSchema>;
95
- export type SubscriptionTrigger = S.Schema.Type<typeof SubscriptionTriggerSchema>;
96
- /**
97
- * Function definition.
98
- */
99
- declare const FunctionDefSchema: S.struct<{
100
- id: S.$string;
101
- description: S.PropertySignature<"?:", string | undefined, never, "?:", string | undefined, never>;
102
- path: S.$string;
103
- handler: S.$string;
93
+ };
94
+ } & {
95
+ id: string;
104
96
  }>;
105
- export type FunctionDef = S.Schema.Type<typeof FunctionDefSchema>;
97
+ export declare class FunctionTrigger extends FunctionTrigger_base {
98
+ }
106
99
  /**
107
100
  * Function manifest file.
108
101
  */
109
102
  export declare const FunctionManifestSchema: S.struct<{
110
- functions: S.mutable<S.array<S.struct<{
111
- id: S.$string;
112
- description: S.PropertySignature<"?:", string | undefined, never, "?:", string | undefined, never>;
113
- path: S.$string;
114
- handler: S.$string;
115
- }>>>;
116
- triggers: S.PropertySignature<"?:", {
117
- readonly function: string;
118
- readonly meta?: {
103
+ functions: S.PropertySignature<"?:", Omit<{
104
+ handler: string;
105
+ uri: string;
106
+ description?: string | undefined;
107
+ route: string;
108
+ } & {
109
+ id: string;
110
+ }, "id">[] | undefined, never, "?:", Omit<{
111
+ handler: string;
112
+ uri: string;
113
+ description?: string | undefined;
114
+ route: string;
115
+ } & {
116
+ id: string;
117
+ }, "id">[] | undefined, never>;
118
+ triggers: S.PropertySignature<"?:", Omit<{
119
+ function: string;
120
+ meta?: {
119
121
  readonly [x: string]: any;
120
122
  } | undefined;
121
- readonly timer?: {
122
- readonly cron: string;
123
- } | undefined;
124
- readonly webhook?: {
125
- port?: number | undefined;
126
- method: string;
127
- } | undefined;
128
- readonly websocket?: {
129
- readonly url: string;
130
- readonly init?: {
131
- readonly [x: string]: any;
132
- } | undefined;
133
- } | undefined;
134
- readonly subscription?: {
123
+ spec: {
135
124
  readonly filter: readonly {
136
125
  readonly type: string;
137
126
  readonly props?: {
138
127
  readonly [x: string]: any;
139
128
  } | undefined;
140
129
  }[];
141
- readonly spaceKey?: string | undefined;
130
+ readonly type: "subscription";
142
131
  readonly options?: {
143
132
  readonly deep?: boolean | undefined;
144
133
  readonly delay?: number | undefined;
145
134
  } | undefined;
146
- } | undefined;
147
- }[] | undefined, never, "?:", {
148
- readonly function: string;
149
- readonly meta?: {
150
- readonly [x: string]: any;
151
- } | undefined;
152
- readonly timer?: {
135
+ } | {
136
+ readonly type: "timer";
153
137
  readonly cron: string;
154
- } | undefined;
155
- readonly webhook?: {
156
- method: string;
138
+ } | {
157
139
  port?: number | undefined;
158
- } | undefined;
159
- readonly websocket?: {
140
+ type: "webhook";
141
+ method: string;
142
+ } | {
143
+ readonly type: "websocket";
160
144
  readonly url: string;
161
145
  readonly init?: {
162
146
  readonly [x: string]: any;
163
147
  } | undefined;
148
+ };
149
+ } & {
150
+ id: string;
151
+ }, "id">[] | undefined, never, "?:", Omit<{
152
+ function: string;
153
+ meta?: {
154
+ readonly [x: string]: any;
164
155
  } | undefined;
165
- readonly subscription?: {
156
+ spec: {
166
157
  readonly filter: readonly {
167
158
  readonly type: string;
168
159
  readonly props?: {
169
160
  readonly [x: string]: any;
170
161
  } | undefined;
171
162
  }[];
172
- readonly spaceKey?: string | undefined;
163
+ readonly type: "subscription";
173
164
  readonly options?: {
174
165
  readonly deep?: boolean | undefined;
175
166
  readonly delay?: number | undefined;
176
167
  } | undefined;
177
- } | undefined;
178
- }[] | undefined, never>;
168
+ } | {
169
+ readonly type: "timer";
170
+ readonly cron: string;
171
+ } | {
172
+ port?: number | undefined;
173
+ type: "webhook";
174
+ method: string;
175
+ } | {
176
+ readonly type: "websocket";
177
+ readonly url: string;
178
+ readonly init?: {
179
+ readonly [x: string]: any;
180
+ } | undefined;
181
+ };
182
+ } & {
183
+ id: string;
184
+ }, "id">[] | undefined, never>;
179
185
  }>;
180
186
  export type FunctionManifest = S.Schema.Type<typeof FunctionManifestSchema>;
181
187
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,CAAC,MAAM,uBAAuB,CAAC;AAE3C,QAAA,MAAM,kBAAkB;;EAEtB,CAAC;AAEH,QAAA,MAAM,oBAAoB;;;GAMzB,CAAC;AAEF,QAAA,MAAM,sBAAsB;;;;;;;EAG1B,CAAC;AAEH,QAAA,MAAM,yBAAyB;;;;;;;;;;;;;;;;;EAiB7B,CAAC;AAEH,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWzB,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAE1E,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,kBAAkB,CAAC,CAAC;AACpE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACxE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAC5E,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAElF;;GAEG;AAEH,QAAA,MAAM,iBAAiB;;;;;EAQrB,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAElE;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGjC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,sBAAsB,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAIA,OAAO,EAAO,CAAC,EAAe,MAAM,mBAAmB,CAAC;AAKxD;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAAG,cAAc,GAAG,OAAO,GAAG,SAAS,GAAG,WAAW,CAAC;AAErF,QAAA,MAAM,yBAAyB;;;;;;;;;;;;;;;;;EAiB7B,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAElF,QAAA,MAAM,kBAAkB;;;EAGtB,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEpE,QAAA,MAAM,oBAAoB;;;;GAOzB,CAAC;AACF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAExE,QAAA,MAAM,sBAAsB;;;;;;;;EAI1B,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAQ5E,MAAM,MAAM,WAAW,GAAG,YAAY,GAAG,cAAc,GAAG,gBAAgB,GAAG,mBAAmB,CAAC;;;;;;;;;AAEjG;;GAEG;AACH,qBAAa,WAAY,SAAQ,gBAS/B;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEL,qBAAa,eAAgB,SAAQ,oBAQnC;CAAG;AAEL;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGjC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,sBAAsB,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/functions",
3
- "version": "0.5.3-main.bc67fdb",
3
+ "version": "0.5.3-main.c8ad1bb",
4
4
  "description": "Functions SDK and runtime.",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -20,32 +20,35 @@
20
20
  "src"
21
21
  ],
22
22
  "dependencies": {
23
- "@effect/schema": "^0.64.20",
24
23
  "@preact/signals-core": "^1.6.0",
25
24
  "cron": "^3.1.6",
26
25
  "effect": "^2.4.19",
27
26
  "express": "^4.19.2",
28
27
  "get-port-please": "^3.1.1",
29
28
  "ws": "^8.14.2",
30
- "@braneframe/types": "0.5.3-main.bc67fdb",
31
- "@dxos/client": "0.5.3-main.bc67fdb",
32
- "@dxos/async": "0.5.3-main.bc67fdb",
33
- "@dxos/echo-schema": "0.5.3-main.bc67fdb",
34
- "@dxos/context": "0.5.3-main.bc67fdb",
35
- "@dxos/invariant": "0.5.3-main.bc67fdb",
36
- "@dxos/node-std": "0.5.3-main.bc67fdb",
37
- "@dxos/util": "0.5.3-main.bc67fdb",
38
- "@dxos/log": "0.5.3-main.bc67fdb"
29
+ "@braneframe/types": "0.5.3-main.c8ad1bb",
30
+ "@dxos/async": "0.5.3-main.c8ad1bb",
31
+ "@dxos/client": "0.5.3-main.c8ad1bb",
32
+ "@dxos/echo-db": "0.5.3-main.c8ad1bb",
33
+ "@dxos/context": "0.5.3-main.c8ad1bb",
34
+ "@dxos/echo-schema": "0.5.3-main.c8ad1bb",
35
+ "@dxos/invariant": "0.5.3-main.c8ad1bb",
36
+ "@dxos/log": "0.5.3-main.c8ad1bb",
37
+ "@dxos/util": "0.5.3-main.c8ad1bb",
38
+ "@dxos/keys": "0.5.3-main.c8ad1bb",
39
+ "@dxos/node-std": "0.5.3-main.c8ad1bb",
40
+ "@dxos/protocols": "0.5.3-main.c8ad1bb"
39
41
  },
40
42
  "devDependencies": {
41
43
  "@types/express": "^4.17.17",
42
44
  "@types/ws": "^7.4.0",
43
- "@dxos/agent": "0.5.3-main.bc67fdb"
45
+ "@dxos/agent": "0.5.3-main.c8ad1bb"
44
46
  },
45
47
  "publishConfig": {
46
48
  "access": "public"
47
49
  },
48
50
  "scripts": {
49
- "gen-schema": "ts-node ./tools/schema.ts"
51
+ "gen-schema": "ts-node ./tools/schema.ts",
52
+ "prebuild": "pnpm gen-schema"
50
53
  }
51
54
  }