@dxos/functions 0.7.5-labs.ea4b4c2 → 0.7.5-labs.f400bbc

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 (58) hide show
  1. package/dist/lib/browser/bundler/index.mjs +20 -20
  2. package/dist/lib/browser/bundler/index.mjs.map +3 -3
  3. package/dist/lib/browser/{chunk-PI2DP37S.mjs → chunk-IXJNRWJP.mjs} +40 -10
  4. package/dist/lib/browser/chunk-IXJNRWJP.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-JNWHUD6Z.mjs → chunk-XLM3CJXO.mjs} +2 -2
  6. package/dist/lib/browser/index.mjs +23 -7
  7. package/dist/lib/browser/index.mjs.map +3 -3
  8. package/dist/lib/browser/meta.json +1 -1
  9. package/dist/lib/browser/testing/index.mjs +2 -2
  10. package/dist/lib/browser/types/index.mjs +1 -1
  11. package/dist/lib/node/bundler/index.cjs +20 -20
  12. package/dist/lib/node/bundler/index.cjs.map +3 -3
  13. package/dist/lib/node/{chunk-PGFJYL6Q.cjs → chunk-MGCKR53Q.cjs} +41 -13
  14. package/dist/lib/node/chunk-MGCKR53Q.cjs.map +7 -0
  15. package/dist/lib/node/{chunk-2ASAZ4AS.cjs → chunk-TLSUCABH.cjs} +15 -15
  16. package/dist/lib/node/index.cjs +36 -19
  17. package/dist/lib/node/index.cjs.map +3 -3
  18. package/dist/lib/node/meta.json +1 -1
  19. package/dist/lib/node/testing/index.cjs +7 -7
  20. package/dist/lib/node/types/index.cjs +10 -10
  21. package/dist/lib/node/types/index.cjs.map +1 -1
  22. package/dist/lib/node-esm/bundler/index.mjs +20 -20
  23. package/dist/lib/node-esm/bundler/index.mjs.map +3 -3
  24. package/dist/lib/node-esm/{chunk-LNBGGB6Z.mjs → chunk-CKTHJQ7M.mjs} +2 -2
  25. package/dist/lib/node-esm/{chunk-IOAKDIT3.mjs → chunk-FCZGNRNF.mjs} +40 -10
  26. package/dist/lib/node-esm/chunk-FCZGNRNF.mjs.map +7 -0
  27. package/dist/lib/node-esm/index.mjs +23 -7
  28. package/dist/lib/node-esm/index.mjs.map +3 -3
  29. package/dist/lib/node-esm/meta.json +1 -1
  30. package/dist/lib/node-esm/testing/index.mjs +2 -2
  31. package/dist/lib/node-esm/types/index.mjs +1 -1
  32. package/dist/types/src/bundler/bundler.d.ts +15 -3
  33. package/dist/types/src/bundler/bundler.d.ts.map +1 -1
  34. package/dist/types/src/handler.d.ts +30 -4
  35. package/dist/types/src/handler.d.ts.map +1 -1
  36. package/dist/types/src/testing/types.d.ts +2 -2
  37. package/dist/types/src/types/index.d.ts +1 -0
  38. package/dist/types/src/types/index.d.ts.map +1 -1
  39. package/dist/types/src/types/schema.d.ts +16 -16
  40. package/dist/types/src/types/schema.d.ts.map +1 -1
  41. package/dist/types/src/types/trace.d.ts +103 -0
  42. package/dist/types/src/types/trace.d.ts.map +1 -0
  43. package/dist/types/src/types/types.d.ts +8 -8
  44. package/dist/types/src/types/types.d.ts.map +1 -1
  45. package/package.json +21 -20
  46. package/src/bundler/bundler.test.ts +10 -6
  47. package/src/bundler/bundler.ts +21 -7
  48. package/src/handler.ts +58 -9
  49. package/src/types/index.ts +1 -0
  50. package/src/types/schema.ts +0 -1
  51. package/src/types/trace.ts +49 -0
  52. package/src/types/types.ts +1 -1
  53. package/dist/lib/browser/chunk-PI2DP37S.mjs.map +0 -7
  54. package/dist/lib/node/chunk-PGFJYL6Q.cjs.map +0 -7
  55. package/dist/lib/node-esm/chunk-IOAKDIT3.mjs.map +0 -7
  56. /package/dist/lib/browser/{chunk-JNWHUD6Z.mjs.map → chunk-XLM3CJXO.mjs.map} +0 -0
  57. /package/dist/lib/node/{chunk-2ASAZ4AS.cjs.map → chunk-TLSUCABH.cjs.map} +0 -0
  58. /package/dist/lib/node-esm/{chunk-LNBGGB6Z.mjs.map → chunk-CKTHJQ7M.mjs.map} +0 -0
package/src/handler.ts CHANGED
@@ -2,13 +2,17 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { type Schema as S } from '@effect/schema';
5
+ import { Schema as S } from '@effect/schema';
6
+ import { type Effect } from 'effect';
6
7
 
7
8
  import { type Client, PublicKey } from '@dxos/client';
8
9
  import { type Space, type SpaceId } from '@dxos/client/echo';
9
- import type { CoreDatabase, ReactiveEchoObject } from '@dxos/echo-db';
10
+ import type { CoreDatabase, EchoDatabase, ReactiveEchoObject } from '@dxos/echo-db';
11
+ import { type HasId } from '@dxos/echo-schema';
12
+ import { type DXN } from '@dxos/keys';
10
13
  import { log } from '@dxos/log';
11
- import { nonNullable } from '@dxos/util';
14
+ import { type QueryResult } from '@dxos/protocols';
15
+ import { isNonNullable } from '@dxos/util';
12
16
 
13
17
  // TODO(burdon): Model after http request. Ref Lambda/OpenFaaS.
14
18
  // https://docs.aws.amazon.com/lambda/latest/dg/typescript-handler.html
@@ -18,15 +22,14 @@ import { nonNullable } from '@dxos/util';
18
22
  /**
19
23
  * Function handler.
20
24
  */
21
- export type FunctionHandler<TData = {}, TMeta = {}> = (params: {
25
+ export type FunctionHandler<TData = {}, TMeta = {}, TOutput = any> = (params: {
22
26
  context: FunctionContext;
23
27
  event: FunctionEvent<TData, TMeta>;
24
-
25
28
  /**
26
29
  * @deprecated
27
30
  */
28
31
  response: FunctionResponse;
29
- }) => Promise<Response | FunctionResponse | void>;
32
+ }) => TOutput | Promise<TOutput> | Effect.Effect<TOutput, any>;
30
33
 
31
34
  /**
32
35
  * Function context.
@@ -84,17 +87,61 @@ export type FunctionResponse = {
84
87
  // API.
85
88
  //
86
89
 
90
+ // TODO(dmaretskyi): Temporary API to get the queues working.
91
+ // TODO(dmaretskyi): To be replaced with integrating queues into echo.
92
+ export interface QueuesAPI {
93
+ queryQueue(queue: DXN, options?: {}): Promise<QueryResult>;
94
+ insertIntoQueue(queue: DXN, objects: HasId[]): Promise<void>;
95
+ }
96
+
87
97
  /**
88
98
  * Space interface available to functions.
89
99
  */
90
100
  export interface SpaceAPI {
91
101
  get id(): SpaceId;
102
+ /**
103
+ * @deprecated
104
+ */
92
105
  get crud(): CoreDatabase;
106
+ get db(): EchoDatabase;
107
+ // TODO(dmaretskyi): Align with echo api --- queues.get(id).append(items);
108
+ get queues(): QueuesAPI;
93
109
  }
94
110
 
111
+ // TODO(wittjosiah): Fix this.
95
112
  const __assertFunctionSpaceIsCompatibleWithTheClientSpace = () => {
96
- // eslint-disable-next-line unused-imports/no-unused-vars
97
- const y: SpaceAPI = {} as Space;
113
+ // const _: SpaceAPI = {} as Space;
114
+ };
115
+
116
+ export type FunctionDefinition = {
117
+ description?: string;
118
+ inputSchema: S.Schema.AnyNoContext;
119
+ outputSchema?: S.Schema.AnyNoContext;
120
+ handler: FunctionHandler<any>;
121
+ };
122
+
123
+ export type DefineFunctionParams<T, O = any> = {
124
+ description?: string;
125
+ inputSchema: S.Schema<T, any>;
126
+ outputSchema?: S.Schema<O, any>;
127
+ handler: FunctionHandler<T, any, O>;
128
+ };
129
+
130
+ // TODO(dmaretskyi): Bind input type to function handler.
131
+ export const defineFunction = <T, O>(params: DefineFunctionParams<T, O>): FunctionDefinition => {
132
+ if (!S.isSchema(params.inputSchema)) {
133
+ throw new Error('Input schema must be a valid schema');
134
+ }
135
+ if (typeof params.handler !== 'function') {
136
+ throw new Error('Handler must be a function');
137
+ }
138
+
139
+ return {
140
+ description: params.description,
141
+ inputSchema: params.inputSchema,
142
+ outputSchema: params.outputSchema ?? S.Any,
143
+ handler: params.handler,
144
+ };
98
145
  };
99
146
 
100
147
  //
@@ -136,7 +183,9 @@ export const subscriptionHandler = <TMeta>(
136
183
 
137
184
  registerTypes(space, types);
138
185
  const objects = space
139
- ? data.objects?.map<ReactiveEchoObject<any> | undefined>((id) => space!.db.getObjectById(id)).filter(nonNullable)
186
+ ? data.objects
187
+ ?.map<ReactiveEchoObject<any> | undefined>((id) => space!.db.getObjectById(id))
188
+ .filter(isNonNullable)
140
189
  : [];
141
190
 
142
191
  if (!!data.spaceKey && !space) {
@@ -4,3 +4,4 @@
4
4
 
5
5
  export * from './schema';
6
6
  export * from './types';
7
+ export * from './trace';
@@ -12,7 +12,6 @@ export class ScriptType extends TypedObject({
12
12
  typename: 'dxos.org/type/Script',
13
13
  version: '0.1.0',
14
14
  })({
15
- // TODO(burdon): Change to URI?
16
15
  name: S.optional(S.String),
17
16
  description: S.optional(S.String),
18
17
  // TODO(burdon): Change to hash of deployed content.
@@ -0,0 +1,49 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { EchoObject, Expando, ObjectId, Ref, S } from '@dxos/echo-schema';
6
+
7
+ import { FunctionTrigger } from './types';
8
+
9
+ const InvocationTrace = S.Struct({
10
+ id: ObjectId,
11
+ /**
12
+ * Queue DXN for function/workflow invocation events.
13
+ */
14
+ invocationTraceQueue: Ref(Expando),
15
+ /**
16
+ * DXN of the invoked function/workflow.
17
+ */
18
+ invocationTarget: Ref(Expando),
19
+ /**
20
+ * Present for automatic invocations.
21
+ */
22
+ trigger: S.optional(Ref(FunctionTrigger)),
23
+ }).pipe(EchoObject('dxos.org/type/InvocationTrace', '0.1.0'));
24
+
25
+ export type InvocationTraceEvent = S.Schema.Type<typeof InvocationTrace>;
26
+
27
+ const TraceEventLog = S.Struct({
28
+ timestampMs: S.Number,
29
+ level: S.String,
30
+ message: S.String,
31
+ context: S.optional(S.Object),
32
+ });
33
+
34
+ const TraceEventException = S.Struct({
35
+ timestampMs: S.Number,
36
+ message: S.String,
37
+ name: S.String,
38
+ stack: S.optional(S.String),
39
+ });
40
+
41
+ const TraceEvent = S.Struct({
42
+ id: ObjectId,
43
+ outcome: S.String,
44
+ truncated: S.Boolean,
45
+ logs: S.Array(TraceEventLog),
46
+ exceptions: S.Array(TraceEventException),
47
+ }).pipe(EchoObject('dxos.org/type/TraceEvent', '0.1.0'));
48
+
49
+ export type TraceEvent = S.Schema.Type<typeof TraceEvent>;
@@ -95,7 +95,6 @@ export type SubscriptionTrigger = S.Schema.Type<typeof SubscriptionTriggerSchema
95
95
  * Trigger schema (discriminated union).
96
96
  */
97
97
  export const TriggerSchema = S.Union(
98
- //
99
98
  TimerTriggerSchema,
100
99
  WebhookTriggerSchema,
101
100
  SubscriptionTriggerSchema,
@@ -112,6 +111,7 @@ export type TriggerType = S.Schema.Type<typeof TriggerSchema>;
112
111
  */
113
112
  export const FunctionTriggerSchema = S.Struct({
114
113
  // TODO(burdon): What type does this reference.
114
+ // TODO(wittjosiah): This should probably be a Ref?
115
115
  function: S.optional(S.String.annotations({ [AST.TitleAnnotationId]: 'Function' })),
116
116
 
117
117
  enabled: S.optional(S.Boolean.annotations({ [AST.TitleAnnotationId]: 'Enabled' })),
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/types/schema.ts", "../../../src/types/types.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { JsonSchemaType, Ref, S, TypedObject } from '@dxos/echo-schema';\nimport { TextType } from '@dxos/schema';\n\n/**\n * Source script.\n */\nexport class ScriptType extends TypedObject({\n typename: 'dxos.org/type/Script',\n version: '0.1.0',\n})({\n // TODO(burdon): Change to URI?\n name: S.optional(S.String),\n description: S.optional(S.String),\n // TODO(burdon): Change to hash of deployed content.\n // Whether source has changed since last deploy.\n changed: S.optional(S.Boolean),\n source: Ref(TextType),\n}) {}\n\n/**\n * Function deployment.\n */\n// TODO(burdon): Move to core/functions.\nexport class FunctionType extends TypedObject({\n typename: 'dxos.org/type/Function',\n version: '0.1.0',\n})({\n // TODO(burdon): Rename to id/uri?\n name: S.NonEmptyString,\n version: S.String,\n\n description: S.optional(S.String),\n\n // Reference to a source script if it exists within ECHO.\n // TODO(burdon): Don't ref ScriptType directly (core).\n source: S.optional(Ref(ScriptType)),\n\n inputSchema: S.optional(JsonSchemaType),\n outputSchema: S.optional(JsonSchemaType),\n\n // Local binding to a function name.\n binding: S.optional(S.String),\n}) {}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { AST, OptionsAnnotationId, RawObject, S, TypedObject, DXN } from '@dxos/echo-schema';\n\n/**\n * Type discriminator for TriggerType.\n * Every spec has a type field of type TriggerKind that we can use to understand which type we're working with.\n * https://www.typescriptlang.org/docs/handbook/2/narrowing.html#discriminated-unions\n */\nexport enum TriggerKind {\n Timer = 'timer',\n Webhook = 'webhook',\n Subscription = 'subscription',\n Email = 'email',\n Queue = 'queue',\n}\n\n// TODO(burdon): Rename prop kind.\nconst typeLiteralAnnotations = { [AST.TitleAnnotationId]: 'Type' };\n\n/**\n * Cron timer.\n */\nconst TimerTriggerSchema = S.Struct({\n type: S.Literal(TriggerKind.Timer).annotations(typeLiteralAnnotations),\n cron: S.String.annotations({\n [AST.TitleAnnotationId]: 'Cron',\n [AST.ExamplesAnnotationId]: ['0 0 * * *'],\n }),\n}).pipe(S.mutable);\n\nexport type TimerTrigger = S.Schema.Type<typeof TimerTriggerSchema>;\n\nconst EmailTriggerSchema = S.Struct({\n type: S.Literal(TriggerKind.Email).annotations(typeLiteralAnnotations),\n}).pipe(S.mutable);\n\nexport type EmailTrigger = S.Schema.Type<typeof EmailTriggerSchema>;\n\nconst QueueTriggerSchema = S.Struct({\n type: S.Literal(TriggerKind.Queue).annotations(typeLiteralAnnotations),\n queue: DXN,\n}).pipe(S.mutable);\n\nexport type QueueTrigger = S.Schema.Type<typeof QueueTriggerSchema>;\n\n/**\n * Webhook.\n */\nconst WebhookTriggerSchema = S.Struct({\n type: S.Literal(TriggerKind.Webhook).annotations(typeLiteralAnnotations),\n method: S.optional(\n S.String.annotations({\n [AST.TitleAnnotationId]: 'Method',\n [OptionsAnnotationId]: ['GET', 'POST'],\n }),\n ),\n port: S.optional(\n S.Number.annotations({\n [AST.TitleAnnotationId]: 'Port',\n }),\n ),\n}).pipe(S.mutable);\n\nexport type WebhookTrigger = S.Schema.Type<typeof WebhookTriggerSchema>;\n\n// TODO(burdon): Use ECHO definition (from https://github.com/dxos/dxos/pull/8233).\nconst QuerySchema = S.Struct({\n type: S.optional(S.String.annotations({ [AST.TitleAnnotationId]: 'Type' })),\n props: S.optional(S.Record({ key: S.String, value: S.Any })),\n}).annotations({ [AST.TitleAnnotationId]: 'Query' });\n\n/**\n * Subscription.\n */\nconst SubscriptionTriggerSchema = S.Struct({\n type: S.Literal(TriggerKind.Subscription).annotations(typeLiteralAnnotations),\n // TODO(burdon): Define query DSL (from ECHO). Reconcile with Table.Query.\n filter: QuerySchema,\n options: S.optional(\n S.Struct({\n // Watch changes to object (not just creation).\n deep: S.optional(S.Boolean.annotations({ [AST.TitleAnnotationId]: 'Nested' })),\n // Debounce changes (delay in ms).\n delay: S.optional(S.Number.annotations({ [AST.TitleAnnotationId]: 'Delay' })),\n }).annotations({ [AST.TitleAnnotationId]: 'Options' }),\n ),\n}).pipe(S.mutable);\n\nexport type SubscriptionTrigger = S.Schema.Type<typeof SubscriptionTriggerSchema>;\n\n/**\n * Trigger schema (discriminated union).\n */\nexport const TriggerSchema = S.Union(\n //\n TimerTriggerSchema,\n WebhookTriggerSchema,\n SubscriptionTriggerSchema,\n EmailTriggerSchema,\n QueueTriggerSchema,\n).annotations({\n [AST.TitleAnnotationId]: 'Trigger',\n});\n\nexport type TriggerType = S.Schema.Type<typeof TriggerSchema>;\n\n/**\n * Function trigger.\n */\nexport const FunctionTriggerSchema = S.Struct({\n // TODO(burdon): What type does this reference.\n function: S.optional(S.String.annotations({ [AST.TitleAnnotationId]: 'Function' })),\n\n enabled: S.optional(S.Boolean.annotations({ [AST.TitleAnnotationId]: 'Enabled' })),\n\n // TODO(burdon): Flatten entire schema.\n spec: S.optional(TriggerSchema),\n\n // TODO(burdon): Get meta from function.\n // The `meta` property is merged into the event data passed to the function.\n meta: S.optional(S.mutable(S.Record({ key: S.String, value: S.Any }))),\n});\n\nexport type FunctionTriggerType = S.Schema.Type<typeof FunctionTriggerSchema>;\n\n/**\n * Function trigger.\n */\nexport class FunctionTrigger extends TypedObject({\n typename: 'dxos.org/type/FunctionTrigger',\n version: '0.1.0',\n})(FunctionTriggerSchema.fields) {}\n\n/**\n * Function definition.\n * @deprecated (Use dxos.org/type/Function)\n */\n// TODO(burdon): Reconcile with FunctionType.\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 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\nexport const FUNCTION_TYPES = [FunctionDef, FunctionTrigger];\n"],
5
- "mappings": ";;;AAIA,SAASA,gBAAgBC,KAAKC,GAAGC,mBAAmB;AACpD,SAASC,gBAAgB;AAKlB,IAAMC,aAAN,cAAyBC,YAAY;EAC1CC,UAAU;EACVC,SAAS;AACX,CAAA,EAAG;;EAEDC,MAAMC,EAAEC,SAASD,EAAEE,MAAM;EACzBC,aAAaH,EAAEC,SAASD,EAAEE,MAAM;;;EAGhCE,SAASJ,EAAEC,SAASD,EAAEK,OAAO;EAC7BC,QAAQC,IAAIC,QAAAA;AACd,CAAA,EAAA;AAAI;AAMG,IAAMC,eAAN,cAA2Bb,YAAY;EAC5CC,UAAU;EACVC,SAAS;AACX,CAAA,EAAG;;EAEDC,MAAMC,EAAEU;EACRZ,SAASE,EAAEE;EAEXC,aAAaH,EAAEC,SAASD,EAAEE,MAAM;;;EAIhCI,QAAQN,EAAEC,SAASM,IAAIZ,UAAAA,CAAAA;EAEvBgB,aAAaX,EAAEC,SAASW,cAAAA;EACxBC,cAAcb,EAAEC,SAASW,cAAAA;;EAGzBE,SAASd,EAAEC,SAASD,EAAEE,MAAM;AAC9B,CAAA,EAAA;AAAI;;;AC1CJ,SAASa,KAAKC,qBAAqBC,WAAWC,KAAAA,IAAGC,eAAAA,cAAaC,WAAW;;UAO7DC,cAAAA;;;;;;GAAAA,gBAAAA,cAAAA,CAAAA,EAAAA;AASZ,IAAMC,yBAAyB;EAAE,CAACC,IAAIC,iBAAiB,GAAG;AAAO;AAKjE,IAAMC,qBAAqBC,GAAEC,OAAO;EAClCC,MAAMF,GAAEG,QAAO,OAAA,EAAoBC,YAAYR,sBAAAA;EAC/CS,MAAML,GAAEM,OAAOF,YAAY;IACzB,CAACP,IAAIC,iBAAiB,GAAG;IACzB,CAACD,IAAIU,oBAAoB,GAAG;MAAC;;EAC/B,CAAA;AACF,CAAA,EAAGC,KAAKR,GAAES,OAAO;AAIjB,IAAMC,qBAAqBV,GAAEC,OAAO;EAClCC,MAAMF,GAAEG,QAAO,OAAA,EAAoBC,YAAYR,sBAAAA;AACjD,CAAA,EAAGY,KAAKR,GAAES,OAAO;AAIjB,IAAME,qBAAqBX,GAAEC,OAAO;EAClCC,MAAMF,GAAEG,QAAO,OAAA,EAAoBC,YAAYR,sBAAAA;EAC/CgB,OAAOC;AACT,CAAA,EAAGL,KAAKR,GAAES,OAAO;AAOjB,IAAMK,uBAAuBd,GAAEC,OAAO;EACpCC,MAAMF,GAAEG,QAAO,SAAA,EAAsBC,YAAYR,sBAAAA;EACjDmB,QAAQf,GAAEgB,SACRhB,GAAEM,OAAOF,YAAY;IACnB,CAACP,IAAIC,iBAAiB,GAAG;IACzB,CAACmB,mBAAAA,GAAsB;MAAC;MAAO;;EACjC,CAAA,CAAA;EAEFC,MAAMlB,GAAEgB,SACNhB,GAAEmB,OAAOf,YAAY;IACnB,CAACP,IAAIC,iBAAiB,GAAG;EAC3B,CAAA,CAAA;AAEJ,CAAA,EAAGU,KAAKR,GAAES,OAAO;AAKjB,IAAMW,cAAcpB,GAAEC,OAAO;EAC3BC,MAAMF,GAAEgB,SAAShB,GAAEM,OAAOF,YAAY;IAAE,CAACP,IAAIC,iBAAiB,GAAG;EAAO,CAAA,CAAA;EACxEuB,OAAOrB,GAAEgB,SAAShB,GAAEsB,OAAO;IAAEC,KAAKvB,GAAEM;IAAQkB,OAAOxB,GAAEyB;EAAI,CAAA,CAAA;AAC3D,CAAA,EAAGrB,YAAY;EAAE,CAACP,IAAIC,iBAAiB,GAAG;AAAQ,CAAA;AAKlD,IAAM4B,4BAA4B1B,GAAEC,OAAO;EACzCC,MAAMF,GAAEG,QAAO,cAAA,EAA2BC,YAAYR,sBAAAA;;EAEtD+B,QAAQP;EACRQ,SAAS5B,GAAEgB,SACThB,GAAEC,OAAO;;IAEP4B,MAAM7B,GAAEgB,SAAShB,GAAE8B,QAAQ1B,YAAY;MAAE,CAACP,IAAIC,iBAAiB,GAAG;IAAS,CAAA,CAAA;;IAE3EiC,OAAO/B,GAAEgB,SAAShB,GAAEmB,OAAOf,YAAY;MAAE,CAACP,IAAIC,iBAAiB,GAAG;IAAQ,CAAA,CAAA;EAC5E,CAAA,EAAGM,YAAY;IAAE,CAACP,IAAIC,iBAAiB,GAAG;EAAU,CAAA,CAAA;AAExD,CAAA,EAAGU,KAAKR,GAAES,OAAO;AAOV,IAAMuB,gBAAgBhC,GAAEiC;;EAE7BlC;EACAe;EACAY;EACAhB;EACAC;AAAAA,EACAP,YAAY;EACZ,CAACP,IAAIC,iBAAiB,GAAG;AAC3B,CAAA;AAOO,IAAMoC,wBAAwBlC,GAAEC,OAAO;;EAE5CkC,UAAUnC,GAAEgB,SAAShB,GAAEM,OAAOF,YAAY;IAAE,CAACP,IAAIC,iBAAiB,GAAG;EAAW,CAAA,CAAA;EAEhFsC,SAASpC,GAAEgB,SAAShB,GAAE8B,QAAQ1B,YAAY;IAAE,CAACP,IAAIC,iBAAiB,GAAG;EAAU,CAAA,CAAA;;EAG/EuC,MAAMrC,GAAEgB,SAASgB,aAAAA;;;EAIjBM,MAAMtC,GAAEgB,SAAShB,GAAES,QAAQT,GAAEsB,OAAO;IAAEC,KAAKvB,GAAEM;IAAQkB,OAAOxB,GAAEyB;EAAI,CAAA,CAAA,CAAA;AACpE,CAAA;AAOO,IAAMc,kBAAN,cAA8BC,aAAY;EAC/CC,UAAU;EACVC,SAAS;AACX,CAAA,EAAGR,sBAAsBS,MAAM,EAAA;AAAG;AAO3B,IAAMC,cAAN,cAA0BJ,aAAY;EAC3CC,UAAU;EACVC,SAAS;AACX,CAAA,EAAG;EACDG,KAAK7C,GAAEM;EACPwC,aAAa9C,GAAEgB,SAAShB,GAAEM,MAAM;EAChCyC,OAAO/C,GAAEM;EACT0C,SAAShD,GAAEM;AACb,CAAA,EAAA;AAAI;AAKG,IAAM2C,yBAAyBjD,GAAEC,OAAO;EAC7CiD,WAAWlD,GAAEgB,SAAShB,GAAES,QAAQT,GAAEmD,MAAMC,UAAUR,WAAAA,CAAAA,CAAAA,CAAAA;EAClDS,UAAUrD,GAAEgB,SAAShB,GAAES,QAAQT,GAAEmD,MAAMC,UAAUb,eAAAA,CAAAA,CAAAA,CAAAA;AACnD,CAAA;AAIO,IAAMe,iBAAiB;EAACV;EAAaL;;",
6
- "names": ["JsonSchemaType", "Ref", "S", "TypedObject", "TextType", "ScriptType", "TypedObject", "typename", "version", "name", "S", "optional", "String", "description", "changed", "Boolean", "source", "Ref", "TextType", "FunctionType", "NonEmptyString", "inputSchema", "JsonSchemaType", "outputSchema", "binding", "AST", "OptionsAnnotationId", "RawObject", "S", "TypedObject", "DXN", "TriggerKind", "typeLiteralAnnotations", "AST", "TitleAnnotationId", "TimerTriggerSchema", "S", "Struct", "type", "Literal", "annotations", "cron", "String", "ExamplesAnnotationId", "pipe", "mutable", "EmailTriggerSchema", "QueueTriggerSchema", "queue", "DXN", "WebhookTriggerSchema", "method", "optional", "OptionsAnnotationId", "port", "Number", "QuerySchema", "props", "Record", "key", "value", "Any", "SubscriptionTriggerSchema", "filter", "options", "deep", "Boolean", "delay", "TriggerSchema", "Union", "FunctionTriggerSchema", "function", "enabled", "spec", "meta", "FunctionTrigger", "TypedObject", "typename", "version", "fields", "FunctionDef", "uri", "description", "route", "handler", "FunctionManifestSchema", "functions", "Array", "RawObject", "triggers", "FUNCTION_TYPES"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/types/schema.ts", "../../../src/types/types.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { JsonSchemaType, Ref, S, TypedObject } from '@dxos/echo-schema';\nimport { TextType } from '@dxos/schema';\n\n/**\n * Source script.\n */\nexport class ScriptType extends TypedObject({\n typename: 'dxos.org/type/Script',\n version: '0.1.0',\n})({\n // TODO(burdon): Change to URI?\n name: S.optional(S.String),\n description: S.optional(S.String),\n // TODO(burdon): Change to hash of deployed content.\n // Whether source has changed since last deploy.\n changed: S.optional(S.Boolean),\n source: Ref(TextType),\n}) {}\n\n/**\n * Function deployment.\n */\n// TODO(burdon): Move to core/functions.\nexport class FunctionType extends TypedObject({\n typename: 'dxos.org/type/Function',\n version: '0.1.0',\n})({\n // TODO(burdon): Rename to id/uri?\n name: S.NonEmptyString,\n version: S.String,\n\n description: S.optional(S.String),\n\n // Reference to a source script if it exists within ECHO.\n // TODO(burdon): Don't ref ScriptType directly (core).\n source: S.optional(Ref(ScriptType)),\n\n inputSchema: S.optional(JsonSchemaType),\n outputSchema: S.optional(JsonSchemaType),\n\n // Local binding to a function name.\n binding: S.optional(S.String),\n}) {}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { AST, OptionsAnnotationId, RawObject, S, TypedObject, DXN } from '@dxos/echo-schema';\n\n/**\n * Type discriminator for TriggerType.\n * Every spec has a type field of type TriggerKind that we can use to understand which type we're working with.\n * https://www.typescriptlang.org/docs/handbook/2/narrowing.html#discriminated-unions\n */\nexport enum TriggerKind {\n Timer = 'timer',\n Webhook = 'webhook',\n Subscription = 'subscription',\n Email = 'email',\n Queue = 'queue',\n}\n\n// TODO(burdon): Rename prop kind.\nconst typeLiteralAnnotations = { [AST.TitleAnnotationId]: 'Type' };\n\n/**\n * Cron timer.\n */\nconst TimerTriggerSchema = S.Struct({\n type: S.Literal(TriggerKind.Timer).annotations(typeLiteralAnnotations),\n cron: S.String.annotations({\n [AST.TitleAnnotationId]: 'Cron',\n [AST.ExamplesAnnotationId]: ['0 0 * * *'],\n }),\n}).pipe(S.mutable);\n\nexport type TimerTrigger = S.Schema.Type<typeof TimerTriggerSchema>;\n\nconst EmailTriggerSchema = S.Struct({\n type: S.Literal(TriggerKind.Email).annotations(typeLiteralAnnotations),\n}).pipe(S.mutable);\n\nexport type EmailTrigger = S.Schema.Type<typeof EmailTriggerSchema>;\n\nconst QueueTriggerSchema = S.Struct({\n type: S.Literal(TriggerKind.Queue).annotations(typeLiteralAnnotations),\n queue: DXN,\n}).pipe(S.mutable);\n\nexport type QueueTrigger = S.Schema.Type<typeof QueueTriggerSchema>;\n\n/**\n * Webhook.\n */\nconst WebhookTriggerSchema = S.Struct({\n type: S.Literal(TriggerKind.Webhook).annotations(typeLiteralAnnotations),\n method: S.optional(\n S.String.annotations({\n [AST.TitleAnnotationId]: 'Method',\n [OptionsAnnotationId]: ['GET', 'POST'],\n }),\n ),\n port: S.optional(\n S.Number.annotations({\n [AST.TitleAnnotationId]: 'Port',\n }),\n ),\n}).pipe(S.mutable);\n\nexport type WebhookTrigger = S.Schema.Type<typeof WebhookTriggerSchema>;\n\n// TODO(burdon): Use ECHO definition (from https://github.com/dxos/dxos/pull/8233).\nconst QuerySchema = S.Struct({\n type: S.optional(S.String.annotations({ [AST.TitleAnnotationId]: 'Type' })),\n props: S.optional(S.Record({ key: S.String, value: S.Any })),\n}).annotations({ [AST.TitleAnnotationId]: 'Query' });\n\n/**\n * Subscription.\n */\nconst SubscriptionTriggerSchema = S.Struct({\n type: S.Literal(TriggerKind.Subscription).annotations(typeLiteralAnnotations),\n // TODO(burdon): Define query DSL (from ECHO). Reconcile with Table.Query.\n filter: QuerySchema,\n options: S.optional(\n S.Struct({\n // Watch changes to object (not just creation).\n deep: S.optional(S.Boolean.annotations({ [AST.TitleAnnotationId]: 'Nested' })),\n // Debounce changes (delay in ms).\n delay: S.optional(S.Number.annotations({ [AST.TitleAnnotationId]: 'Delay' })),\n }).annotations({ [AST.TitleAnnotationId]: 'Options' }),\n ),\n}).pipe(S.mutable);\n\nexport type SubscriptionTrigger = S.Schema.Type<typeof SubscriptionTriggerSchema>;\n\n/**\n * Trigger schema (discriminated union).\n */\nexport const TriggerSchema = S.Union(\n //\n TimerTriggerSchema,\n WebhookTriggerSchema,\n SubscriptionTriggerSchema,\n EmailTriggerSchema,\n QueueTriggerSchema,\n).annotations({\n [AST.TitleAnnotationId]: 'Trigger',\n});\n\nexport type TriggerType = S.Schema.Type<typeof TriggerSchema>;\n\n/**\n * Function trigger.\n */\nexport const FunctionTriggerSchema = S.Struct({\n // TODO(burdon): What type does this reference.\n function: S.optional(S.String.annotations({ [AST.TitleAnnotationId]: 'Function' })),\n\n enabled: S.optional(S.Boolean.annotations({ [AST.TitleAnnotationId]: 'Enabled' })),\n\n // TODO(burdon): Flatten entire schema.\n spec: S.optional(TriggerSchema),\n\n // TODO(burdon): Get meta from function.\n // The `meta` property is merged into the event data passed to the function.\n meta: S.optional(S.mutable(S.Record({ key: S.String, value: S.Any }))),\n});\n\nexport type FunctionTriggerType = S.Schema.Type<typeof FunctionTriggerSchema>;\n\n/**\n * Function trigger.\n */\nexport class FunctionTrigger extends TypedObject({\n typename: 'dxos.org/type/FunctionTrigger',\n version: '0.1.0',\n})(FunctionTriggerSchema.fields) {}\n\n/**\n * Function definition.\n * @deprecated (Use dxos.org/type/Function)\n */\n// TODO(burdon): Reconcile with FunctionType.\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 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\nexport const FUNCTION_TYPES = [FunctionDef, FunctionTrigger];\n"],
5
- "mappings": "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",
6
- "names": ["import_echo_schema", "ScriptType", "TypedObject", "typename", "version", "name", "S", "optional", "String", "description", "changed", "Boolean", "source", "Ref", "TextType", "FunctionType", "NonEmptyString", "inputSchema", "JsonSchemaType", "outputSchema", "binding", "TriggerKind", "typeLiteralAnnotations", "AST", "TitleAnnotationId", "TimerTriggerSchema", "Struct", "type", "Literal", "annotations", "cron", "ExamplesAnnotationId", "pipe", "mutable", "EmailTriggerSchema", "QueueTriggerSchema", "queue", "DXN", "WebhookTriggerSchema", "method", "OptionsAnnotationId", "port", "Number", "QuerySchema", "props", "Record", "key", "value", "Any", "SubscriptionTriggerSchema", "filter", "options", "deep", "delay", "TriggerSchema", "Union", "FunctionTriggerSchema", "function", "enabled", "spec", "meta", "FunctionTrigger", "fields", "FunctionDef", "uri", "route", "handler", "FunctionManifestSchema", "functions", "Array", "RawObject", "triggers", "FUNCTION_TYPES"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/types/schema.ts", "../../../src/types/types.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { JsonSchemaType, Ref, S, TypedObject } from '@dxos/echo-schema';\nimport { TextType } from '@dxos/schema';\n\n/**\n * Source script.\n */\nexport class ScriptType extends TypedObject({\n typename: 'dxos.org/type/Script',\n version: '0.1.0',\n})({\n // TODO(burdon): Change to URI?\n name: S.optional(S.String),\n description: S.optional(S.String),\n // TODO(burdon): Change to hash of deployed content.\n // Whether source has changed since last deploy.\n changed: S.optional(S.Boolean),\n source: Ref(TextType),\n}) {}\n\n/**\n * Function deployment.\n */\n// TODO(burdon): Move to core/functions.\nexport class FunctionType extends TypedObject({\n typename: 'dxos.org/type/Function',\n version: '0.1.0',\n})({\n // TODO(burdon): Rename to id/uri?\n name: S.NonEmptyString,\n version: S.String,\n\n description: S.optional(S.String),\n\n // Reference to a source script if it exists within ECHO.\n // TODO(burdon): Don't ref ScriptType directly (core).\n source: S.optional(Ref(ScriptType)),\n\n inputSchema: S.optional(JsonSchemaType),\n outputSchema: S.optional(JsonSchemaType),\n\n // Local binding to a function name.\n binding: S.optional(S.String),\n}) {}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { AST, OptionsAnnotationId, RawObject, S, TypedObject, DXN } from '@dxos/echo-schema';\n\n/**\n * Type discriminator for TriggerType.\n * Every spec has a type field of type TriggerKind that we can use to understand which type we're working with.\n * https://www.typescriptlang.org/docs/handbook/2/narrowing.html#discriminated-unions\n */\nexport enum TriggerKind {\n Timer = 'timer',\n Webhook = 'webhook',\n Subscription = 'subscription',\n Email = 'email',\n Queue = 'queue',\n}\n\n// TODO(burdon): Rename prop kind.\nconst typeLiteralAnnotations = { [AST.TitleAnnotationId]: 'Type' };\n\n/**\n * Cron timer.\n */\nconst TimerTriggerSchema = S.Struct({\n type: S.Literal(TriggerKind.Timer).annotations(typeLiteralAnnotations),\n cron: S.String.annotations({\n [AST.TitleAnnotationId]: 'Cron',\n [AST.ExamplesAnnotationId]: ['0 0 * * *'],\n }),\n}).pipe(S.mutable);\n\nexport type TimerTrigger = S.Schema.Type<typeof TimerTriggerSchema>;\n\nconst EmailTriggerSchema = S.Struct({\n type: S.Literal(TriggerKind.Email).annotations(typeLiteralAnnotations),\n}).pipe(S.mutable);\n\nexport type EmailTrigger = S.Schema.Type<typeof EmailTriggerSchema>;\n\nconst QueueTriggerSchema = S.Struct({\n type: S.Literal(TriggerKind.Queue).annotations(typeLiteralAnnotations),\n queue: DXN,\n}).pipe(S.mutable);\n\nexport type QueueTrigger = S.Schema.Type<typeof QueueTriggerSchema>;\n\n/**\n * Webhook.\n */\nconst WebhookTriggerSchema = S.Struct({\n type: S.Literal(TriggerKind.Webhook).annotations(typeLiteralAnnotations),\n method: S.optional(\n S.String.annotations({\n [AST.TitleAnnotationId]: 'Method',\n [OptionsAnnotationId]: ['GET', 'POST'],\n }),\n ),\n port: S.optional(\n S.Number.annotations({\n [AST.TitleAnnotationId]: 'Port',\n }),\n ),\n}).pipe(S.mutable);\n\nexport type WebhookTrigger = S.Schema.Type<typeof WebhookTriggerSchema>;\n\n// TODO(burdon): Use ECHO definition (from https://github.com/dxos/dxos/pull/8233).\nconst QuerySchema = S.Struct({\n type: S.optional(S.String.annotations({ [AST.TitleAnnotationId]: 'Type' })),\n props: S.optional(S.Record({ key: S.String, value: S.Any })),\n}).annotations({ [AST.TitleAnnotationId]: 'Query' });\n\n/**\n * Subscription.\n */\nconst SubscriptionTriggerSchema = S.Struct({\n type: S.Literal(TriggerKind.Subscription).annotations(typeLiteralAnnotations),\n // TODO(burdon): Define query DSL (from ECHO). Reconcile with Table.Query.\n filter: QuerySchema,\n options: S.optional(\n S.Struct({\n // Watch changes to object (not just creation).\n deep: S.optional(S.Boolean.annotations({ [AST.TitleAnnotationId]: 'Nested' })),\n // Debounce changes (delay in ms).\n delay: S.optional(S.Number.annotations({ [AST.TitleAnnotationId]: 'Delay' })),\n }).annotations({ [AST.TitleAnnotationId]: 'Options' }),\n ),\n}).pipe(S.mutable);\n\nexport type SubscriptionTrigger = S.Schema.Type<typeof SubscriptionTriggerSchema>;\n\n/**\n * Trigger schema (discriminated union).\n */\nexport const TriggerSchema = S.Union(\n //\n TimerTriggerSchema,\n WebhookTriggerSchema,\n SubscriptionTriggerSchema,\n EmailTriggerSchema,\n QueueTriggerSchema,\n).annotations({\n [AST.TitleAnnotationId]: 'Trigger',\n});\n\nexport type TriggerType = S.Schema.Type<typeof TriggerSchema>;\n\n/**\n * Function trigger.\n */\nexport const FunctionTriggerSchema = S.Struct({\n // TODO(burdon): What type does this reference.\n function: S.optional(S.String.annotations({ [AST.TitleAnnotationId]: 'Function' })),\n\n enabled: S.optional(S.Boolean.annotations({ [AST.TitleAnnotationId]: 'Enabled' })),\n\n // TODO(burdon): Flatten entire schema.\n spec: S.optional(TriggerSchema),\n\n // TODO(burdon): Get meta from function.\n // The `meta` property is merged into the event data passed to the function.\n meta: S.optional(S.mutable(S.Record({ key: S.String, value: S.Any }))),\n});\n\nexport type FunctionTriggerType = S.Schema.Type<typeof FunctionTriggerSchema>;\n\n/**\n * Function trigger.\n */\nexport class FunctionTrigger extends TypedObject({\n typename: 'dxos.org/type/FunctionTrigger',\n version: '0.1.0',\n})(FunctionTriggerSchema.fields) {}\n\n/**\n * Function definition.\n * @deprecated (Use dxos.org/type/Function)\n */\n// TODO(burdon): Reconcile with FunctionType.\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 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\nexport const FUNCTION_TYPES = [FunctionDef, FunctionTrigger];\n"],
5
- "mappings": ";;;AAIA,SAASA,gBAAgBC,KAAKC,GAAGC,mBAAmB;AACpD,SAASC,gBAAgB;AAKlB,IAAMC,aAAN,cAAyBC,YAAY;EAC1CC,UAAU;EACVC,SAAS;AACX,CAAA,EAAG;;EAEDC,MAAMC,EAAEC,SAASD,EAAEE,MAAM;EACzBC,aAAaH,EAAEC,SAASD,EAAEE,MAAM;;;EAGhCE,SAASJ,EAAEC,SAASD,EAAEK,OAAO;EAC7BC,QAAQC,IAAIC,QAAAA;AACd,CAAA,EAAA;AAAI;AAMG,IAAMC,eAAN,cAA2Bb,YAAY;EAC5CC,UAAU;EACVC,SAAS;AACX,CAAA,EAAG;;EAEDC,MAAMC,EAAEU;EACRZ,SAASE,EAAEE;EAEXC,aAAaH,EAAEC,SAASD,EAAEE,MAAM;;;EAIhCI,QAAQN,EAAEC,SAASM,IAAIZ,UAAAA,CAAAA;EAEvBgB,aAAaX,EAAEC,SAASW,cAAAA;EACxBC,cAAcb,EAAEC,SAASW,cAAAA;;EAGzBE,SAASd,EAAEC,SAASD,EAAEE,MAAM;AAC9B,CAAA,EAAA;AAAI;;;AC1CJ,SAASa,KAAKC,qBAAqBC,WAAWC,KAAAA,IAAGC,eAAAA,cAAaC,WAAW;;UAO7DC,cAAAA;;;;;;GAAAA,gBAAAA,cAAAA,CAAAA,EAAAA;AASZ,IAAMC,yBAAyB;EAAE,CAACC,IAAIC,iBAAiB,GAAG;AAAO;AAKjE,IAAMC,qBAAqBC,GAAEC,OAAO;EAClCC,MAAMF,GAAEG,QAAO,OAAA,EAAoBC,YAAYR,sBAAAA;EAC/CS,MAAML,GAAEM,OAAOF,YAAY;IACzB,CAACP,IAAIC,iBAAiB,GAAG;IACzB,CAACD,IAAIU,oBAAoB,GAAG;MAAC;;EAC/B,CAAA;AACF,CAAA,EAAGC,KAAKR,GAAES,OAAO;AAIjB,IAAMC,qBAAqBV,GAAEC,OAAO;EAClCC,MAAMF,GAAEG,QAAO,OAAA,EAAoBC,YAAYR,sBAAAA;AACjD,CAAA,EAAGY,KAAKR,GAAES,OAAO;AAIjB,IAAME,qBAAqBX,GAAEC,OAAO;EAClCC,MAAMF,GAAEG,QAAO,OAAA,EAAoBC,YAAYR,sBAAAA;EAC/CgB,OAAOC;AACT,CAAA,EAAGL,KAAKR,GAAES,OAAO;AAOjB,IAAMK,uBAAuBd,GAAEC,OAAO;EACpCC,MAAMF,GAAEG,QAAO,SAAA,EAAsBC,YAAYR,sBAAAA;EACjDmB,QAAQf,GAAEgB,SACRhB,GAAEM,OAAOF,YAAY;IACnB,CAACP,IAAIC,iBAAiB,GAAG;IACzB,CAACmB,mBAAAA,GAAsB;MAAC;MAAO;;EACjC,CAAA,CAAA;EAEFC,MAAMlB,GAAEgB,SACNhB,GAAEmB,OAAOf,YAAY;IACnB,CAACP,IAAIC,iBAAiB,GAAG;EAC3B,CAAA,CAAA;AAEJ,CAAA,EAAGU,KAAKR,GAAES,OAAO;AAKjB,IAAMW,cAAcpB,GAAEC,OAAO;EAC3BC,MAAMF,GAAEgB,SAAShB,GAAEM,OAAOF,YAAY;IAAE,CAACP,IAAIC,iBAAiB,GAAG;EAAO,CAAA,CAAA;EACxEuB,OAAOrB,GAAEgB,SAAShB,GAAEsB,OAAO;IAAEC,KAAKvB,GAAEM;IAAQkB,OAAOxB,GAAEyB;EAAI,CAAA,CAAA;AAC3D,CAAA,EAAGrB,YAAY;EAAE,CAACP,IAAIC,iBAAiB,GAAG;AAAQ,CAAA;AAKlD,IAAM4B,4BAA4B1B,GAAEC,OAAO;EACzCC,MAAMF,GAAEG,QAAO,cAAA,EAA2BC,YAAYR,sBAAAA;;EAEtD+B,QAAQP;EACRQ,SAAS5B,GAAEgB,SACThB,GAAEC,OAAO;;IAEP4B,MAAM7B,GAAEgB,SAAShB,GAAE8B,QAAQ1B,YAAY;MAAE,CAACP,IAAIC,iBAAiB,GAAG;IAAS,CAAA,CAAA;;IAE3EiC,OAAO/B,GAAEgB,SAAShB,GAAEmB,OAAOf,YAAY;MAAE,CAACP,IAAIC,iBAAiB,GAAG;IAAQ,CAAA,CAAA;EAC5E,CAAA,EAAGM,YAAY;IAAE,CAACP,IAAIC,iBAAiB,GAAG;EAAU,CAAA,CAAA;AAExD,CAAA,EAAGU,KAAKR,GAAES,OAAO;AAOV,IAAMuB,gBAAgBhC,GAAEiC;;EAE7BlC;EACAe;EACAY;EACAhB;EACAC;AAAAA,EACAP,YAAY;EACZ,CAACP,IAAIC,iBAAiB,GAAG;AAC3B,CAAA;AAOO,IAAMoC,wBAAwBlC,GAAEC,OAAO;;EAE5CkC,UAAUnC,GAAEgB,SAAShB,GAAEM,OAAOF,YAAY;IAAE,CAACP,IAAIC,iBAAiB,GAAG;EAAW,CAAA,CAAA;EAEhFsC,SAASpC,GAAEgB,SAAShB,GAAE8B,QAAQ1B,YAAY;IAAE,CAACP,IAAIC,iBAAiB,GAAG;EAAU,CAAA,CAAA;;EAG/EuC,MAAMrC,GAAEgB,SAASgB,aAAAA;;;EAIjBM,MAAMtC,GAAEgB,SAAShB,GAAES,QAAQT,GAAEsB,OAAO;IAAEC,KAAKvB,GAAEM;IAAQkB,OAAOxB,GAAEyB;EAAI,CAAA,CAAA,CAAA;AACpE,CAAA;AAOO,IAAMc,kBAAN,cAA8BC,aAAY;EAC/CC,UAAU;EACVC,SAAS;AACX,CAAA,EAAGR,sBAAsBS,MAAM,EAAA;AAAG;AAO3B,IAAMC,cAAN,cAA0BJ,aAAY;EAC3CC,UAAU;EACVC,SAAS;AACX,CAAA,EAAG;EACDG,KAAK7C,GAAEM;EACPwC,aAAa9C,GAAEgB,SAAShB,GAAEM,MAAM;EAChCyC,OAAO/C,GAAEM;EACT0C,SAAShD,GAAEM;AACb,CAAA,EAAA;AAAI;AAKG,IAAM2C,yBAAyBjD,GAAEC,OAAO;EAC7CiD,WAAWlD,GAAEgB,SAAShB,GAAES,QAAQT,GAAEmD,MAAMC,UAAUR,WAAAA,CAAAA,CAAAA,CAAAA;EAClDS,UAAUrD,GAAEgB,SAAShB,GAAES,QAAQT,GAAEmD,MAAMC,UAAUb,eAAAA,CAAAA,CAAAA,CAAAA;AACnD,CAAA;AAIO,IAAMe,iBAAiB;EAACV;EAAaL;;",
6
- "names": ["JsonSchemaType", "Ref", "S", "TypedObject", "TextType", "ScriptType", "TypedObject", "typename", "version", "name", "S", "optional", "String", "description", "changed", "Boolean", "source", "Ref", "TextType", "FunctionType", "NonEmptyString", "inputSchema", "JsonSchemaType", "outputSchema", "binding", "AST", "OptionsAnnotationId", "RawObject", "S", "TypedObject", "DXN", "TriggerKind", "typeLiteralAnnotations", "AST", "TitleAnnotationId", "TimerTriggerSchema", "S", "Struct", "type", "Literal", "annotations", "cron", "String", "ExamplesAnnotationId", "pipe", "mutable", "EmailTriggerSchema", "QueueTriggerSchema", "queue", "DXN", "WebhookTriggerSchema", "method", "optional", "OptionsAnnotationId", "port", "Number", "QuerySchema", "props", "Record", "key", "value", "Any", "SubscriptionTriggerSchema", "filter", "options", "deep", "Boolean", "delay", "TriggerSchema", "Union", "FunctionTriggerSchema", "function", "enabled", "spec", "meta", "FunctionTrigger", "TypedObject", "typename", "version", "fields", "FunctionDef", "uri", "description", "route", "handler", "FunctionManifestSchema", "functions", "Array", "RawObject", "triggers", "FUNCTION_TYPES"]
7
- }