@dxos/functions 0.5.3-main.b41a319 → 0.5.3-main.bbd33a9

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 (85) hide show
  1. package/dist/lib/browser/chunk-P3HPDHNI.mjs +86 -0
  2. package/dist/lib/browser/chunk-P3HPDHNI.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +722 -487
  4. package/dist/lib/browser/index.mjs.map +4 -4
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/browser/types.mjs +14 -0
  7. package/dist/lib/browser/types.mjs.map +7 -0
  8. package/dist/lib/node/chunk-KTLM3JNV.cjs +103 -0
  9. package/dist/lib/node/chunk-KTLM3JNV.cjs.map +7 -0
  10. package/dist/lib/node/index.cjs +709 -480
  11. package/dist/lib/node/index.cjs.map +4 -4
  12. package/dist/lib/node/meta.json +1 -1
  13. package/dist/lib/node/types.cjs +35 -0
  14. package/dist/lib/node/types.cjs.map +7 -0
  15. package/dist/types/src/browser/index.d.ts +2 -0
  16. package/dist/types/src/browser/index.d.ts.map +1 -0
  17. package/dist/types/src/function/function-registry.d.ts +24 -0
  18. package/dist/types/src/function/function-registry.d.ts.map +1 -0
  19. package/dist/types/src/function/function-registry.test.d.ts +2 -0
  20. package/dist/types/src/function/function-registry.test.d.ts.map +1 -0
  21. package/dist/types/src/function/index.d.ts +2 -0
  22. package/dist/types/src/function/index.d.ts.map +1 -0
  23. package/dist/types/src/handler.d.ts.map +1 -1
  24. package/dist/types/src/index.d.ts +2 -0
  25. package/dist/types/src/index.d.ts.map +1 -1
  26. package/dist/types/src/runtime/dev-server.d.ts +7 -10
  27. package/dist/types/src/runtime/dev-server.d.ts.map +1 -1
  28. package/dist/types/src/runtime/scheduler.d.ts +11 -59
  29. package/dist/types/src/runtime/scheduler.d.ts.map +1 -1
  30. package/dist/types/src/testing/functions-integration.test.d.ts +2 -0
  31. package/dist/types/src/testing/functions-integration.test.d.ts.map +1 -0
  32. package/dist/types/src/testing/index.d.ts +4 -0
  33. package/dist/types/src/testing/index.d.ts.map +1 -0
  34. package/dist/types/src/testing/setup.d.ts +5 -0
  35. package/dist/types/src/testing/setup.d.ts.map +1 -0
  36. package/dist/types/src/testing/test/handler.d.ts +1 -0
  37. package/dist/types/src/testing/test/handler.d.ts.map +1 -1
  38. package/dist/types/src/testing/types.d.ts +9 -0
  39. package/dist/types/src/testing/types.d.ts.map +1 -0
  40. package/dist/types/src/testing/util.d.ts +3 -0
  41. package/dist/types/src/testing/util.d.ts.map +1 -0
  42. package/dist/types/src/trigger/index.d.ts +2 -0
  43. package/dist/types/src/trigger/index.d.ts.map +1 -0
  44. package/dist/types/src/trigger/trigger-registry.d.ts +40 -0
  45. package/dist/types/src/trigger/trigger-registry.d.ts.map +1 -0
  46. package/dist/types/src/trigger/trigger-registry.test.d.ts +2 -0
  47. package/dist/types/src/trigger/trigger-registry.test.d.ts.map +1 -0
  48. package/dist/types/src/trigger/type/index.d.ts +5 -0
  49. package/dist/types/src/trigger/type/index.d.ts.map +1 -0
  50. package/dist/types/src/trigger/type/subscription-trigger.d.ts +4 -0
  51. package/dist/types/src/trigger/type/subscription-trigger.d.ts.map +1 -0
  52. package/dist/types/src/trigger/type/timer-trigger.d.ts +4 -0
  53. package/dist/types/src/trigger/type/timer-trigger.d.ts.map +1 -0
  54. package/dist/types/src/trigger/type/webhook-trigger.d.ts +4 -0
  55. package/dist/types/src/trigger/type/webhook-trigger.d.ts.map +1 -0
  56. package/dist/types/src/trigger/type/websocket-trigger.d.ts +13 -0
  57. package/dist/types/src/trigger/type/websocket-trigger.d.ts.map +1 -0
  58. package/dist/types/src/types.d.ts +143 -122
  59. package/dist/types/src/types.d.ts.map +1 -1
  60. package/package.json +30 -14
  61. package/schema/functions.json +139 -116
  62. package/src/browser/index.ts +5 -0
  63. package/src/function/function-registry.test.ts +105 -0
  64. package/src/function/function-registry.ts +90 -0
  65. package/src/function/index.ts +5 -0
  66. package/src/index.ts +2 -0
  67. package/src/runtime/dev-server.test.ts +15 -35
  68. package/src/runtime/dev-server.ts +37 -20
  69. package/src/runtime/scheduler.test.ts +54 -75
  70. package/src/runtime/scheduler.ts +70 -297
  71. package/src/testing/functions-integration.test.ts +99 -0
  72. package/src/testing/index.ts +7 -0
  73. package/src/testing/setup.ts +45 -0
  74. package/src/testing/test/handler.ts +8 -2
  75. package/src/testing/types.ts +9 -0
  76. package/src/testing/util.ts +16 -0
  77. package/src/trigger/index.ts +5 -0
  78. package/src/trigger/trigger-registry.test.ts +255 -0
  79. package/src/trigger/trigger-registry.ts +201 -0
  80. package/src/trigger/type/index.ts +8 -0
  81. package/src/trigger/type/subscription-trigger.ts +80 -0
  82. package/src/trigger/type/timer-trigger.ts +44 -0
  83. package/src/trigger/type/webhook-trigger.ts +47 -0
  84. package/src/trigger/type/websocket-trigger.ts +91 -0
  85. package/src/types.ts +78 -53
@@ -0,0 +1,4 @@
1
+ export * from './setup';
2
+ export * from './types';
3
+ export * from './util';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/testing/index.ts"],"names":[],"mappings":"AAIA,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { Client, Config } from '@dxos/client';
2
+ import { type TestBuilder } from '@dxos/client/testing';
3
+ export declare const createInitializedClients: (testBuilder: TestBuilder, count?: number, config?: Config) => Promise<Client[]>;
4
+ export declare const createFunctionRuntime: (testBuilder: TestBuilder) => Promise<Client>;
5
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../../src/testing/setup.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAQxD,eAAO,MAAM,wBAAwB,gBAAuB,WAAW,UAAS,MAAM,WAAe,MAAM,sBAW1G,CAAC;AAEF,eAAO,MAAM,qBAAqB,gBAAuB,WAAW,KAAG,QAAQ,MAAM,CAiBpF,CAAC"}
@@ -1,3 +1,4 @@
1
1
  import { type FunctionHandler } from '../../handler';
2
+ export declare const setTestCallHandler: (handler: FunctionHandler<any>) => void;
2
3
  export declare const handler: FunctionHandler<any>;
3
4
  //# sourceMappingURL=handler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../../src/testing/test/handler.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD,eAAO,MAAM,OAAO,EAAE,eAAe,CAAC,GAAG,CAExC,CAAC"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../../src/testing/test/handler.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AAIrD,eAAO,MAAM,kBAAkB,YAAa,gBAAgB,GAAG,CAAC,SAE/D,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,eAAe,CAAC,GAAG,CAExC,CAAC"}
@@ -0,0 +1,9 @@
1
+ declare const TestType_base: import("@dxos/echo-schema").EchoSchemaClass<{
2
+ title: string;
3
+ } & {
4
+ id: string;
5
+ }>;
6
+ export declare class TestType extends TestType_base {
7
+ }
8
+ export {};
9
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/testing/types.ts"],"names":[],"mappings":";;;;;AAMA,qBAAa,QAAS,SAAQ,aAE5B;CAAG"}
@@ -0,0 +1,3 @@
1
+ import { type Space } from '@dxos/client/echo';
2
+ export declare const triggerWebhook: (space: Space, uri: string) => Promise<void>;
3
+ //# sourceMappingURL=util.d.ts.map
@@ -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,EAA2B,KAAK,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAQlD,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;cAyBrD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;cA6BtB,MAAM,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAK1D,OAAO,CAAC,kBAAkB;YAgBZ,sBAAsB;IA2BpC,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,CAkEzE,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
- }>;
17
- declare const SubscriptionTriggerSchema: S.struct<{
18
- spaceKey: S.PropertySignature<"?:", string | undefined, never, "?:", string | undefined, never>;
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';
9
+ declare const SubscriptionTriggerSchema: S.mutable<S.struct<{
10
+ type: S.literal<["subscription"]>;
19
11
  filter: S.array<S.struct<{
20
12
  type: S.$string;
21
13
  props: S.PropertySignature<"?:", {
@@ -31,152 +23,181 @@ declare const SubscriptionTriggerSchema: S.struct<{
31
23
  readonly deep?: boolean | undefined;
32
24
  readonly delay?: number | undefined;
33
25
  } | undefined, never>;
34
- }>;
35
- declare const FunctionTriggerSchema: S.struct<{
36
- function: S.$string;
37
- meta: S.PropertySignature<"?:", {
26
+ }>>;
27
+ export type SubscriptionTrigger = S.Schema.Type<typeof SubscriptionTriggerSchema>;
28
+ declare const TimerTriggerSchema: S.mutable<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.mutable<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<"?:", {
66
- readonly filter: readonly {
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?: object | undefined;
66
+ spec: {
67
+ filter: readonly {
67
68
  readonly type: string;
68
69
  readonly props?: {
69
70
  readonly [x: string]: any;
70
71
  } | undefined;
71
72
  }[];
72
- readonly spaceKey?: string | undefined;
73
- readonly options?: {
73
+ type: "subscription";
74
+ options?: {
74
75
  readonly deep?: boolean | undefined;
75
76
  readonly delay?: number | undefined;
76
77
  } | 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;
78
+ } | {
79
+ type: "timer";
80
+ cron: string;
81
+ } | {
82
+ port?: number | undefined;
83
+ type: "webhook";
84
+ method: string;
85
+ } | {
86
+ type: "websocket";
87
+ url: string;
88
+ init?: {
89
+ readonly [x: string]: any;
88
90
  } | 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;
91
+ };
92
+ } & {
93
+ id: string;
104
94
  }>;
105
- export type FunctionDef = S.Schema.Type<typeof FunctionDefSchema>;
95
+ export declare class FunctionTrigger extends FunctionTrigger_base {
96
+ }
106
97
  /**
107
98
  * Function manifest file.
108
99
  */
109
100
  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?: {
119
- readonly [x: string]: any;
120
- } | undefined;
121
- readonly timer?: {
122
- readonly cron: string;
123
- } | undefined;
124
- readonly webhook?: {
125
- port?: number | undefined;
126
- method: string;
101
+ functions: S.PropertySignature<"?:", ({
102
+ handler: string;
103
+ uri: string;
104
+ description?: string | undefined;
105
+ route: string;
106
+ } & {
107
+ "@meta"?: {
108
+ readonly keys: {
109
+ readonly id: string;
110
+ readonly source: string;
111
+ }[];
127
112
  } | undefined;
128
- readonly websocket?: {
129
- readonly url: string;
130
- readonly init?: {
131
- readonly [x: string]: any;
132
- } | undefined;
113
+ })[] | undefined, never, "?:", ({
114
+ handler: string;
115
+ uri: string;
116
+ description?: string | undefined;
117
+ route: string;
118
+ } & {
119
+ "@meta"?: {
120
+ readonly keys: {
121
+ readonly id: string;
122
+ readonly source: string;
123
+ }[];
133
124
  } | undefined;
134
- readonly subscription?: {
135
- readonly filter: readonly {
125
+ })[] | undefined, never>;
126
+ triggers: S.PropertySignature<"?:", ({
127
+ function: string;
128
+ meta?: object | undefined;
129
+ spec: {
130
+ filter: readonly {
136
131
  readonly type: string;
137
132
  readonly props?: {
138
133
  readonly [x: string]: any;
139
134
  } | undefined;
140
135
  }[];
141
- readonly spaceKey?: string | undefined;
142
- readonly options?: {
136
+ type: "subscription";
137
+ options?: {
143
138
  readonly deep?: boolean | undefined;
144
139
  readonly delay?: number | undefined;
145
140
  } | undefined;
146
- } | undefined;
147
- }[] | undefined, never, "?:", {
148
- readonly function: string;
149
- readonly meta?: {
150
- readonly [x: string]: any;
151
- } | undefined;
152
- readonly timer?: {
153
- readonly cron: string;
154
- } | undefined;
155
- readonly webhook?: {
156
- method: string;
141
+ } | {
142
+ type: "timer";
143
+ cron: string;
144
+ } | {
157
145
  port?: number | undefined;
158
- } | undefined;
159
- readonly websocket?: {
160
- readonly url: string;
161
- readonly init?: {
146
+ type: "webhook";
147
+ method: string;
148
+ } | {
149
+ type: "websocket";
150
+ url: string;
151
+ init?: {
162
152
  readonly [x: string]: any;
163
153
  } | undefined;
154
+ };
155
+ } & {
156
+ "@meta"?: {
157
+ readonly keys: {
158
+ readonly id: string;
159
+ readonly source: string;
160
+ }[];
164
161
  } | undefined;
165
- readonly subscription?: {
166
- readonly filter: readonly {
162
+ })[] | undefined, never, "?:", ({
163
+ function: string;
164
+ meta?: object | undefined;
165
+ spec: {
166
+ filter: readonly {
167
167
  readonly type: string;
168
168
  readonly props?: {
169
169
  readonly [x: string]: any;
170
170
  } | undefined;
171
171
  }[];
172
- readonly spaceKey?: string | undefined;
173
- readonly options?: {
172
+ type: "subscription";
173
+ options?: {
174
174
  readonly deep?: boolean | undefined;
175
175
  readonly delay?: number | undefined;
176
176
  } | undefined;
177
+ } | {
178
+ type: "timer";
179
+ cron: string;
180
+ } | {
181
+ port?: number | undefined;
182
+ type: "webhook";
183
+ method: string;
184
+ } | {
185
+ type: "websocket";
186
+ url: string;
187
+ init?: {
188
+ readonly [x: string]: any;
189
+ } | undefined;
190
+ };
191
+ } & {
192
+ "@meta"?: {
193
+ readonly keys: {
194
+ readonly id: string;
195
+ readonly source: string;
196
+ }[];
177
197
  } | undefined;
178
- }[] | undefined, never>;
198
+ })[] | undefined, never>;
179
199
  }>;
180
200
  export type FunctionManifest = S.Schema.Type<typeof FunctionManifestSchema>;
201
+ export declare const FUNCTION_SCHEMA: (typeof FunctionDef | typeof FunctionTrigger)[];
181
202
  export {};
182
203
  //# sourceMappingURL=types.d.ts.map
@@ -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,EAAa,CAAC,EAAe,MAAM,mBAAmB,CAAC;AAE9D;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAAG,cAAc,GAAG,OAAO,GAAG,SAAS,GAAG,WAAW,CAAC;AAErF,QAAA,MAAM,yBAAyB;;;;;;;;;;;;;;;;;GAmB9B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAElF,QAAA,MAAM,kBAAkB;;;GAKvB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEpE,QAAA,MAAM,oBAAoB;;;;GAOzB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAExE,QAAA,MAAM,sBAAsB;;;;;;;;GAM3B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAS5E,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;AAG5E,eAAO,MAAM,eAAe,iDAAiC,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@dxos/functions",
3
- "version": "0.5.3-main.b41a319",
4
- "description": "Functions SDK and runtime.",
3
+ "version": "0.5.3-main.bbd33a9",
4
+ "description": "Functions API and runtime.",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
7
7
  "license": "MIT",
@@ -10,37 +10,53 @@
10
10
  ".": {
11
11
  "browser": "./dist/lib/browser/index.mjs",
12
12
  "node": "./dist/lib/node/index.cjs",
13
- "default": "./dist/lib/node/index.cjs"
13
+ "default": "./dist/lib/node/index.cjs",
14
+ "types": "./dist/types/src/index.d.ts"
15
+ },
16
+ "./types": {
17
+ "browser": "./dist/lib/browser/types.mjs",
18
+ "node": "./dist/lib/node/types.cjs",
19
+ "default": "./dist/lib/node/types.cjs",
20
+ "types": "./dist/types/src/types.d.ts"
14
21
  }
15
22
  },
16
23
  "types": "dist/types/src/index.d.ts",
24
+ "typesVersions": {
25
+ "*": {
26
+ "types": [
27
+ "dist/types/src/types.d.ts"
28
+ ]
29
+ }
30
+ },
17
31
  "files": [
18
32
  "dist",
19
33
  "schema",
20
34
  "src"
21
35
  ],
22
36
  "dependencies": {
23
- "@effect/schema": "^0.64.20",
24
37
  "@preact/signals-core": "^1.6.0",
25
38
  "cron": "^3.1.6",
26
39
  "effect": "^2.4.19",
27
40
  "express": "^4.19.2",
28
41
  "get-port-please": "^3.1.1",
29
42
  "ws": "^8.14.2",
30
- "@braneframe/types": "0.5.3-main.b41a319",
31
- "@dxos/client": "0.5.3-main.b41a319",
32
- "@dxos/async": "0.5.3-main.b41a319",
33
- "@dxos/context": "0.5.3-main.b41a319",
34
- "@dxos/invariant": "0.5.3-main.b41a319",
35
- "@dxos/log": "0.5.3-main.b41a319",
36
- "@dxos/util": "0.5.3-main.b41a319",
37
- "@dxos/echo-schema": "0.5.3-main.b41a319",
38
- "@dxos/node-std": "0.5.3-main.b41a319"
43
+ "@braneframe/types": "0.5.3-main.bbd33a9",
44
+ "@dxos/async": "0.5.3-main.bbd33a9",
45
+ "@dxos/client": "0.5.3-main.bbd33a9",
46
+ "@dxos/context": "0.5.3-main.bbd33a9",
47
+ "@dxos/echo-db": "0.5.3-main.bbd33a9",
48
+ "@dxos/echo-schema": "0.5.3-main.bbd33a9",
49
+ "@dxos/keys": "0.5.3-main.bbd33a9",
50
+ "@dxos/invariant": "0.5.3-main.bbd33a9",
51
+ "@dxos/log": "0.5.3-main.bbd33a9",
52
+ "@dxos/node-std": "0.5.3-main.bbd33a9",
53
+ "@dxos/util": "0.5.3-main.bbd33a9",
54
+ "@dxos/protocols": "0.5.3-main.bbd33a9"
39
55
  },
40
56
  "devDependencies": {
41
57
  "@types/express": "^4.17.17",
42
58
  "@types/ws": "^7.4.0",
43
- "@dxos/agent": "0.5.3-main.b41a319"
59
+ "@dxos/agent": "0.5.3-main.bbd33a9"
44
60
  },
45
61
  "publishConfig": {
46
62
  "access": "public"