@gaganref/confect-server 10.3.1-fork.41 → 10.3.1-fork.43

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 (53) hide show
  1. package/dist/ActionCall.d.ts.map +1 -1
  2. package/dist/ActionCall.js +5 -5
  3. package/dist/ActionCall.js.map +1 -1
  4. package/dist/ActionRunner.d.ts +1 -1
  5. package/dist/ActionRunner.d.ts.map +1 -1
  6. package/dist/ActionRunner.js +2 -2
  7. package/dist/ActionRunner.js.map +1 -1
  8. package/dist/Callback.js +1 -1
  9. package/dist/FunctionRegistryItem.d.ts +1 -0
  10. package/dist/FunctionRegistryItem.d.ts.map +1 -1
  11. package/dist/FunctionRegistryItem.js +1 -0
  12. package/dist/FunctionRegistryItem.js.map +1 -1
  13. package/dist/GroupImpl.js +1 -1
  14. package/dist/HttpRouter.js +1 -1
  15. package/dist/MutationRunner.d.ts +1 -1
  16. package/dist/MutationRunner.d.ts.map +1 -1
  17. package/dist/MutationRunner.js +2 -2
  18. package/dist/MutationRunner.js.map +1 -1
  19. package/dist/MutationTransactionContext.d.ts.map +1 -1
  20. package/dist/MutationTransactionContext.js +2 -1
  21. package/dist/MutationTransactionContext.js.map +1 -1
  22. package/dist/QueryStream.js +2 -2
  23. package/dist/QueryStreamKeyValues.js +1 -1
  24. package/dist/QueryStreamReadBudget.js +2 -2
  25. package/dist/RegisteredConvexFunction.d.ts +4 -2
  26. package/dist/RegisteredConvexFunction.d.ts.map +1 -1
  27. package/dist/RegisteredConvexFunction.js +10 -7
  28. package/dist/RegisteredConvexFunction.js.map +1 -1
  29. package/dist/RegisteredFunction.d.ts +17 -4
  30. package/dist/RegisteredFunction.d.ts.map +1 -1
  31. package/dist/RegisteredFunction.js +43 -19
  32. package/dist/RegisteredFunction.js.map +1 -1
  33. package/dist/RegisteredNodeFunction.d.ts.map +1 -1
  34. package/dist/RegisteredNodeFunction.js +3 -1
  35. package/dist/RegisteredNodeFunction.js.map +1 -1
  36. package/dist/Scheduler.d.ts.map +1 -1
  37. package/dist/Scheduler.js +9 -8
  38. package/dist/Scheduler.js.map +1 -1
  39. package/dist/internal/reservedArgument.d.ts +8 -0
  40. package/dist/internal/reservedArgument.d.ts.map +1 -0
  41. package/dist/internal/reservedArgument.js +30 -0
  42. package/dist/internal/reservedArgument.js.map +1 -0
  43. package/package.json +2 -2
  44. package/src/ActionCall.ts +4 -3
  45. package/src/ActionRunner.ts +3 -2
  46. package/src/FunctionRegistryItem.ts +4 -0
  47. package/src/MutationRunner.ts +3 -2
  48. package/src/MutationTransactionContext.ts +2 -1
  49. package/src/RegisteredConvexFunction.ts +19 -3
  50. package/src/RegisteredFunction.ts +71 -14
  51. package/src/RegisteredNodeFunction.ts +4 -0
  52. package/src/Scheduler.ts +13 -16
  53. package/src/internal/reservedArgument.ts +56 -0
@@ -1,8 +1,9 @@
1
+ export { Forward } from "./internal/reservedArgument.js";
1
2
  import type { FunctionSpec, RuntimeAndFunctionType } from "@confect/core";
2
3
  import * as IdScope from "@confect/core/IdScope";
3
4
  import type * as FunctionProvenance from "@confect/core/FunctionProvenance";
4
5
  import * as MiddlewareSpec from "@confect/core/MiddlewareSpec";
5
- import { type DefaultFunctionArgs, type FunctionVisibility, type FunctionMetadata, type GenericActionCtx, type GenericDataModel, type StorageReader as ConvexStorageReader, type RegisteredAction, type RegisteredMutation, type RegisteredQuery } from "convex/server";
6
+ import { type DefaultFunctionArgs, type FunctionVisibility, type FunctionMetadata, type MutationMeta, type GenericActionCtx, type GenericDataModel, type StorageReader as ConvexStorageReader, type RegisteredAction, type RegisteredMutation, type RegisteredQuery } from "convex/server";
6
7
  import type { Value } from "convex/values";
7
8
  import * as Clock from "effect/Clock";
8
9
  import * as Context from "effect/Context";
@@ -26,6 +27,15 @@ import type * as StorageReader from "./StorageReader.js";
26
27
  import * as StorageWriter from "./StorageWriter.js";
27
28
  import * as VectorSearch from "./VectorSearch.js";
28
29
  import type * as Handler from "./Handler.js";
30
+ export interface ReceivedValue {
31
+ readonly value: unknown;
32
+ readonly requestId: string;
33
+ readonly deployment: string | undefined;
34
+ }
35
+ export declare const Received: Context.Reference<ReceivedValue | undefined>;
36
+ export declare const invocationMetadata: (meta: Pick<MutationMeta, "getFunctionMetadata" | "getRequestMetadata">, args: DefaultFunctionArgs, reservedArgument?: string) => Effect.Effect<FunctionMetadata & {
37
+ readonly received?: ReceivedValue;
38
+ }>;
29
39
  export declare const Observability: Context.Reference<Layer.Layer<never, never, never> | undefined>;
30
40
  export type Any = RegisteredQuery<FunctionVisibility, DefaultFunctionArgs, any> | RegisteredMutation<FunctionVisibility, DefaultFunctionArgs, any> | RegisteredAction<FunctionVisibility, DefaultFunctionArgs, any>;
31
41
  type ConfectRegisteredFunction<FunctionSpec_ extends FunctionSpec.AnyWithProps> = FunctionSpec.EncodedArgs<FunctionSpec_> extends infer Args_ extends DefaultFunctionArgs ? RuntimeAndFunctionType.GetFunctionType<FunctionSpec_["runtimeAndFunctionType"]> extends "query" ? RegisteredQuery<FunctionSpec.GetFunctionVisibility<FunctionSpec_>, Args_, Promise<FunctionSpec.EncodedReturns<FunctionSpec_>>> : RuntimeAndFunctionType.GetFunctionType<FunctionSpec_["runtimeAndFunctionType"]> extends "mutation" ? RegisteredMutation<FunctionSpec.GetFunctionVisibility<FunctionSpec_>, Args_, Promise<FunctionSpec.EncodedReturns<FunctionSpec_>>> : RuntimeAndFunctionType.GetFunctionType<FunctionSpec_["runtimeAndFunctionType"]> extends "action" ? RegisteredAction<FunctionSpec.GetFunctionVisibility<FunctionSpec_>, Args_, Promise<FunctionSpec.EncodedReturns<FunctionSpec_>>> : never : never;
@@ -75,11 +85,15 @@ export declare const combineErrorSchemas: (error: Schema.Codec<any, any> | undef
75
85
  export declare const runHandlerPromise: (errorSchema: Schema.Codec<any, any> | undefined, runOptions?: {
76
86
  readonly scheduler?: EffectScheduler.Scheduler | undefined;
77
87
  readonly clock?: Clock.Clock | undefined;
78
- readonly invocation?: Effect.Effect<FunctionMetadata> | undefined;
88
+ readonly invocation?: Effect.Effect<FunctionMetadata & {
89
+ readonly received?: ReceivedValue;
90
+ }> | undefined;
79
91
  readonly observability?: Layer.Layer<never> | undefined;
80
92
  }) => <A, E>(effect: Effect.Effect<A, E>) => Promise<A>;
81
- export declare const actionFunctionBase: <Schema extends DatabaseSchema.AnyWithProps, Args, ConvexArgs extends DefaultFunctionArgs, Returns, ConvexReturns, E, R>({ name, functionVisibility, args, returns, error, handler, resolvedMiddlewares, createLayer, scope, observability, }: {
93
+ export declare const domainArgs: (args: DefaultFunctionArgs, reservedArgument?: string) => DefaultFunctionArgs;
94
+ export declare const actionFunctionBase: <Schema extends DatabaseSchema.AnyWithProps, Args, ConvexArgs extends DefaultFunctionArgs, Returns, ConvexReturns, E, R>({ name, functionVisibility, args, returns, error, handler, resolvedMiddlewares, createLayer, scope, observability, reservedArgument, }: {
82
95
  name: string;
96
+ reservedArgument?: string | undefined;
83
97
  functionVisibility: FunctionVisibility;
84
98
  args: Schema.Codec<Args, ConvexArgs>;
85
99
  returns: Schema.Codec<Returns, ConvexReturns>;
@@ -143,5 +157,4 @@ export declare const actionLayer: <DatabaseSchema_ extends DatabaseSchema.AnyWit
143
157
  };
144
158
  } | ActionCtx.ActionCtx<DataModel.ToConvex<DataModel.FromSchema<DatabaseSchema_>>, DatabaseSchema.Scope<DatabaseSchema_>> | Scheduler.ForScope<DatabaseSchema.Scope<DatabaseSchema_>> | StorageActionWriter.ForScope<DatabaseSchema.Scope<DatabaseSchema_>> | StorageReader.ForScope<DatabaseSchema.Scope<DatabaseSchema_>> | StorageWriter.ForScope<DatabaseSchema.Scope<DatabaseSchema_>> | Auth.ForTarget<DatabaseSchema_["target"]>, never, never>;
145
159
  export declare const storageLayer: <Scope extends IdScope.IdScope>(reader: ConvexStorageReader) => Layer.Layer<Storage.Storage | StorageReader.ForScope<Scope>>;
146
- export {};
147
160
  //# sourceMappingURL=RegisteredFunction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RegisteredFunction.d.ts","sourceRoot":"","sources":["../src/RegisteredFunction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RegisteredFunction.d.ts","sourceRoot":"","sources":["../src/RegisteredFunction.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { __exportAll } from "./_virtual/_rolldown/runtime.js";
2
+ import { Forward } from "./internal/reservedArgument.js";
2
3
  import { ActionCtx, layer } from "./ActionCtx.js";
3
4
  import { layer as layer$1 } from "./ActionRunner.js";
4
5
  import { layer as layer$2 } from "./MutationRunner.js";
@@ -6,41 +7,63 @@ import { layer as layer$3 } from "./QueryRunner.js";
6
7
  import { layer as layer$4 } from "./Scheduler.js";
7
8
  import { ActionCallAlreadyUsed, ActionCallNotUsed, NestedActionNotAllowed, SchedulingNotAllowed } from "./ActionCall.js";
8
9
  import { layer as layer$5, layerForTarget } from "./Auth.js";
9
- import { layer as layer$6 } from "./ConvexLogger.js";
10
- import { layer as layer$7 } from "./ExecutionMetadata.js";
11
- import { layer as layer$8 } from "./RequestMetadata.js";
10
+ import { layer as layer$6 } from "./ConvexConfigProvider.js";
11
+ import { layer as layer$7 } from "./ConvexLogger.js";
12
+ import { layer as layer$8 } from "./ExecutionMetadata.js";
13
+ import { layer as layer$9 } from "./RequestMetadata.js";
12
14
  import { StorageActionWriter } from "./StorageActionWriter.js";
13
15
  import { StorageWriter } from "./StorageWriter.js";
14
- import { layer as layer$9 } from "./Storage.js";
16
+ import { layer as layer$10 } from "./Storage.js";
15
17
  import { memoized } from "./internal/observability.js";
16
- import { layer as layer$10 } from "./VectorSearch.js";
17
- import * as ActionCallSpec from "@confect/core/ActionCall";
18
+ import { layer as layer$11 } from "./VectorSearch.js";
19
+ import { ConvexError } from "convex/values";
18
20
  import * as Context from "effect/Context";
19
21
  import * as Effect from "effect/Effect";
22
+ import * as Tracer from "effect/Tracer";
23
+ import * as ActionCallSpec from "@confect/core/ActionCall";
20
24
  import * as Layer from "effect/Layer";
21
25
  import * as MiddlewareSpec from "@confect/core/MiddlewareSpec";
22
26
  import * as Schema from "effect/Schema";
23
27
  import { pipe } from "effect/Function";
28
+ import * as Option from "effect/Option";
24
29
  import { compileArgsSchema, compileReturnsSchema } from "@confect/core/SchemaToValidator";
25
- import { ConvexError } from "convex/values";
26
30
  import * as Result from "effect/Result";
27
31
  import * as IdScope from "@confect/core/IdScope";
32
+ import * as Config from "effect/Config";
28
33
  import * as Clock from "effect/Clock";
29
34
  import * as Cause from "effect/Cause";
30
35
  import * as Console from "effect/Console";
31
36
  import * as Exit from "effect/Exit";
32
- import * as Tracer from "effect/Tracer";
33
37
  //#region src/RegisteredFunction.ts
34
38
  var RegisteredFunction_exports = /* @__PURE__ */ __exportAll({
39
+ Forward: () => Forward,
35
40
  Observability: () => Observability,
41
+ Received: () => Received,
36
42
  actionFunctionBase: () => actionFunctionBase,
37
43
  actionLayer: () => actionLayer,
38
44
  applyMiddleware: () => applyMiddleware,
39
45
  baseActionLayer: () => baseActionLayer,
40
46
  combineErrorSchemas: () => combineErrorSchemas,
47
+ domainArgs: () => domainArgs,
48
+ invocationMetadata: () => invocationMetadata,
41
49
  runHandlerPromise: () => runHandlerPromise,
42
50
  storageLayer: () => storageLayer
43
51
  });
52
+ const Received = Context.Reference("@confect/server/RegisteredFunction/Received", { defaultValue: () => void 0 });
53
+ const invocationMetadata = (meta, args, reservedArgument) => Effect.gen(function* () {
54
+ const metadata = yield* Effect.promise(() => meta.getFunctionMetadata());
55
+ if (reservedArgument === void 0) return metadata;
56
+ const { requestId } = yield* Effect.promise(() => meta.getRequestMetadata());
57
+ const deployment = yield* Config.String("CONVEX_CLOUD_URL").pipe(Config.option, Effect.map(Option.getOrUndefined), Effect.provide(layer$6), Effect.orDie);
58
+ return {
59
+ ...metadata,
60
+ received: {
61
+ value: args[reservedArgument],
62
+ requestId,
63
+ deployment
64
+ }
65
+ };
66
+ });
44
67
  const Observability = Context.Reference("@confect/server/Observability", { defaultValue: () => void 0 });
45
68
  /**
46
69
  * Wrap a function's handler effect in its resolved middleware chain, per
@@ -113,13 +136,13 @@ const runHandlerPromise = (errorSchema, runOptions) => (effect) => {
113
136
  }
114
137
  }));
115
138
  const withConvexError = Effect.gen(function* () {
116
- const exit = yield* Effect.exit(observability === void 0 || invocation === void 0 ? effect : Effect.flatMap(invocation, ({ name, type, componentPath }) => Effect.useSpan(name, {
139
+ const exit = yield* Effect.exit(observability === void 0 || invocation === void 0 ? effect : Effect.flatMap(invocation, ({ name, type, componentPath, received }) => Effect.useSpan(name, {
117
140
  root: true,
118
141
  attributes: {
119
142
  kind: type,
120
143
  componentPath
121
144
  }
122
- }, (span) => Effect.provideService(observed, Tracer.ParentSpan, span))));
145
+ }, (span) => Effect.provideService(observed, Tracer.ParentSpan, span)).pipe(Effect.provideService(Received, received))));
123
146
  if (Exit.isSuccess(exit)) return Result.succeed(exit.value);
124
147
  if (undeclared !== void 0) return yield* Effect.die(undeclared.error);
125
148
  const cause = encodedError !== void 0 && Exit.isFailure(encodedError) ? encodedError.cause : exit.cause;
@@ -136,18 +159,19 @@ const runHandlerPromise = (errorSchema, runOptions) => (effect) => {
136
159
  }
137
160
  return yield* Effect.die(new Error(Cause.pretty(cause), { cause }));
138
161
  });
139
- return Effect.runPromise(withConvexError.pipe(Effect.provide(observability === void 0 ? layer$6 : memoized(observability)), Effect.provideService(Console.Console, globalThis.console), clock === void 0 ? (self) => self : Effect.provideService(Clock.Clock, clock)), runOptions).then(Result.match({
162
+ return Effect.runPromise(withConvexError.pipe(Effect.provide(observability === void 0 ? layer$7 : memoized(observability)), Effect.provideService(Console.Console, globalThis.console), clock === void 0 ? (self) => self : Effect.provideService(Clock.Clock, clock)), runOptions).then(Result.match({
140
163
  onFailure: (error) => {
141
164
  throw error;
142
165
  },
143
166
  onSuccess: (value) => value
144
167
  }));
145
168
  };
146
- const actionFunctionBase = ({ name, functionVisibility, args, returns, error, handler, resolvedMiddlewares = [], createLayer, scope = IdScope.app, observability }) => ({
147
- args: compileArgsSchema(args, scope),
169
+ const domainArgs = (args, reservedArgument) => reservedArgument === void 0 ? args : Object.fromEntries(Object.entries(args).filter(([key]) => key !== reservedArgument));
170
+ const actionFunctionBase = ({ name, functionVisibility, args, returns, error, handler, resolvedMiddlewares = [], createLayer, scope = IdScope.app, observability, reservedArgument }) => ({
171
+ args: compileArgsSchema(args, scope, reservedArgument, name),
148
172
  returns: compileReturnsSchema(returns, scope),
149
173
  handler: (ctx, actualArgs) => Effect.gen(function* () {
150
- const decodedArgs = yield* pipe(actualArgs, Schema.decodeUnknownEffect(args), Effect.catchTag("SchemaError", Effect.die));
174
+ const decodedArgs = yield* pipe(domainArgs(actualArgs, reservedArgument), Schema.decodeUnknownEffect(args), Effect.catchTag("SchemaError", Effect.die));
151
175
  const restricted = resolvedMiddlewares.some(({ middlewareSpec }) => middlewareSpec.key === ActionCallSpec.Middleware.key) ? restrict(ctx) : void 0;
152
176
  const decodedReturns = yield* applyMiddleware(handler(decodedArgs), resolvedMiddlewares, {
153
177
  name,
@@ -158,7 +182,7 @@ const actionFunctionBase = ({ name, functionVisibility, args, returns, error, ha
158
182
  if (restricted !== void 0) yield* restricted.check;
159
183
  return yield* pipe(decodedReturns, Schema.encodeEffect(returns), Effect.catchTag("SchemaError", Effect.die));
160
184
  }).pipe(runHandlerPromise(combineErrorSchemas(error, resolvedMiddlewares), {
161
- invocation: Effect.promise(() => ctx.meta.getFunctionMetadata()),
185
+ invocation: invocationMetadata(ctx.meta, actualArgs, reservedArgument),
162
186
  observability
163
187
  }))
164
188
  });
@@ -167,9 +191,9 @@ const actionFunctionBase = ({ name, functionVisibility, args, returns, error, ha
167
191
  * schema. {@link actionLayer} adds the schema-typed `VectorSearch` on top; the
168
192
  * HTTP API handler uses this base directly.
169
193
  */
170
- const baseActionLayer = (ctx) => Layer.mergeAll(layer$4(ctx.scheduler), layer$5(ctx.auth), layer$7(ctx.meta), layer$8(ctx.meta), layer$9(ctx.storage), StorageWriter.layer(ctx.storage), StorageActionWriter.layer(ctx.storage), layer$3(ctx.runQuery.bind(ctx)), layer$2(ctx.runMutation.bind(ctx)), layer$1(ctx.runAction.bind(ctx)), Layer.succeed(ActionCtx(), ctx));
171
- const actionLayer = (databaseSchema, ctx) => Layer.mergeAll(layer$4(ctx.scheduler, databaseSchema.target.scope), layerForTarget(databaseSchema.target, ctx.auth), layer$7(ctx.meta), layer$8(ctx.meta), storageLayer(ctx.storage), StorageWriter.layer(ctx.storage, databaseSchema.target.scope), StorageActionWriter.layer(ctx.storage, databaseSchema.target.scope), layer$3(ctx.runQuery.bind(ctx)), layer$2(ctx.runMutation.bind(ctx)), layer$1(ctx.runAction.bind(ctx)), layer(ctx, databaseSchema.target.scope), layer$10(ctx.vectorSearch.bind(ctx)));
172
- const storageLayer = (reader) => layer$9(reader);
194
+ const baseActionLayer = (ctx) => Layer.mergeAll(layer$4(ctx.scheduler), layer$5(ctx.auth), layer$8(ctx.meta), layer$9(ctx.meta), layer$10(ctx.storage), StorageWriter.layer(ctx.storage), StorageActionWriter.layer(ctx.storage), layer$3(ctx.runQuery.bind(ctx)), layer$2(ctx.runMutation.bind(ctx)), layer$1(ctx.runAction.bind(ctx)), Layer.succeed(ActionCtx(), ctx));
195
+ const actionLayer = (databaseSchema, ctx) => Layer.mergeAll(layer$4(ctx.scheduler, databaseSchema.target.scope), layerForTarget(databaseSchema.target, ctx.auth), layer$8(ctx.meta), layer$9(ctx.meta), storageLayer(ctx.storage), StorageWriter.layer(ctx.storage, databaseSchema.target.scope), StorageActionWriter.layer(ctx.storage, databaseSchema.target.scope), layer$3(ctx.runQuery.bind(ctx)), layer$2(ctx.runMutation.bind(ctx)), layer$1(ctx.runAction.bind(ctx)), layer(ctx, databaseSchema.target.scope), layer$11(ctx.vectorSearch.bind(ctx)));
196
+ const storageLayer = (reader) => layer$10(reader);
173
197
  /**
174
198
  * Shares one dispatch budget across the entire middleware chain.
175
199
  */
@@ -209,6 +233,6 @@ const restrict = (ctx) => {
209
233
  };
210
234
  };
211
235
  //#endregion
212
- export { Observability, RegisteredFunction_exports, actionFunctionBase, actionLayer, applyMiddleware, baseActionLayer, combineErrorSchemas, runHandlerPromise, storageLayer };
236
+ export { Forward, Observability, Received, RegisteredFunction_exports, actionFunctionBase, actionLayer, applyMiddleware, baseActionLayer, combineErrorSchemas, domainArgs, invocationMetadata, runHandlerPromise, storageLayer };
213
237
 
214
238
  //# sourceMappingURL=RegisteredFunction.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RegisteredFunction.js","names":["ConvexLogger.layer","ObservabilityRuntime.memoized","Scheduler.layer","Auth.layer","ExecutionMetadata.layer","RequestMetadata.layer","Storage.layer","QueryRunner.layer","MutationRunner.layer","ActionRunner.layer","ActionCtx.ActionCtx","Auth.layerForTarget","ActionCtx.layer","VectorSearch.layer","ActionCall.ActionCallAlreadyUsed","ActionCall.SchedulingNotAllowed","ActionCall.NestedActionNotAllowed","ActionCall.ActionCallNotUsed"],"sources":["../src/RegisteredFunction.ts"],"sourcesContent":["import * as ActionCallSpec from \"@confect/core/ActionCall\";\nimport * as ActionCall from \"./ActionCall.js\";\nimport type { FunctionSpec, RuntimeAndFunctionType } from \"@confect/core\";\nimport * as IdScope from \"@confect/core/IdScope\";\nimport type * as FunctionProvenance from \"@confect/core/FunctionProvenance\";\nimport * as MiddlewareSpec from \"@confect/core/MiddlewareSpec\";\nimport {\n compileArgsSchema,\n compileReturnsSchema,\n} from \"@confect/core/SchemaToValidator\";\nimport {\n type DefaultFunctionArgs,\n type FunctionVisibility,\n type FunctionMetadata,\n type GenericActionCtx,\n type GenericDataModel,\n type StorageReader as ConvexStorageReader,\n type RegisteredAction,\n type RegisteredMutation,\n type RegisteredQuery,\n} from \"convex/server\";\nimport type { Value } from \"convex/values\";\nimport { ConvexError } from \"convex/values\";\nimport { pipe } from \"effect/Function\";\nimport * as Clock from \"effect/Clock\";\nimport * as Cause from \"effect/Cause\";\nimport * as Console from \"effect/Console\";\nimport * as Context from \"effect/Context\";\nimport * as Effect from \"effect/Effect\";\nimport * as Exit from \"effect/Exit\";\nimport * as Result from \"effect/Result\";\nimport * as Layer from \"effect/Layer\";\nimport * as Schema from \"effect/Schema\";\nimport type * as EffectScheduler from \"effect/Scheduler\";\nimport * as ActionCtx from \"./ActionCtx.js\";\nimport * as ActionRunner from \"./ActionRunner.js\";\nimport * as Auth from \"./Auth.js\";\nimport * as ConvexLogger from \"./ConvexLogger.js\";\nimport type * as DatabaseSchema from \"./DatabaseSchema.js\";\nimport type * as DataModel from \"./DataModel.js\";\nimport * as ExecutionMetadata from \"./ExecutionMetadata.js\";\nimport * as RequestMetadata from \"./RequestMetadata.js\";\nimport * as MutationRunner from \"./MutationRunner.js\";\nimport * as QueryRunner from \"./QueryRunner.js\";\nimport type * as ResolvedMiddleware from \"./ResolvedMiddleware.js\";\nimport * as Scheduler from \"./Scheduler.js\";\nimport * as Storage from \"./Storage.js\";\nimport * as StorageActionWriter from \"./StorageActionWriter.js\";\nimport type * as StorageReader from \"./StorageReader.js\";\nimport * as StorageWriter from \"./StorageWriter.js\";\nimport * as Tracer from \"effect/Tracer\";\nimport * as ObservabilityRuntime from \"./internal/observability.js\";\nimport * as VectorSearch from \"./VectorSearch.js\";\nimport type * as Handler from \"./Handler.js\";\n\nexport const Observability = Context.Reference<Layer.Layer<never> | undefined>(\n \"@confect/server/Observability\",\n { defaultValue: () => undefined },\n);\n\nexport type Any =\n | RegisteredQuery<FunctionVisibility, DefaultFunctionArgs, any>\n | RegisteredMutation<FunctionVisibility, DefaultFunctionArgs, any>\n | RegisteredAction<FunctionVisibility, DefaultFunctionArgs, any>;\n\ntype ConfectRegisteredFunction<\n FunctionSpec_ extends FunctionSpec.AnyWithProps,\n> =\n FunctionSpec.EncodedArgs<FunctionSpec_> extends infer Args_ extends\n DefaultFunctionArgs\n ? RuntimeAndFunctionType.GetFunctionType<\n FunctionSpec_[\"runtimeAndFunctionType\"]\n > extends \"query\"\n ? RegisteredQuery<\n FunctionSpec.GetFunctionVisibility<FunctionSpec_>,\n Args_,\n Promise<FunctionSpec.EncodedReturns<FunctionSpec_>>\n >\n : RuntimeAndFunctionType.GetFunctionType<\n FunctionSpec_[\"runtimeAndFunctionType\"]\n > extends \"mutation\"\n ? RegisteredMutation<\n FunctionSpec.GetFunctionVisibility<FunctionSpec_>,\n Args_,\n Promise<FunctionSpec.EncodedReturns<FunctionSpec_>>\n >\n : RuntimeAndFunctionType.GetFunctionType<\n FunctionSpec_[\"runtimeAndFunctionType\"]\n > extends \"action\"\n ? RegisteredAction<\n FunctionSpec.GetFunctionVisibility<FunctionSpec_>,\n Args_,\n Promise<FunctionSpec.EncodedReturns<FunctionSpec_>>\n >\n : never\n : never;\n\nexport type ConvexRegisteredFunction<\n FunctionSpec_ extends FunctionSpec.AnyWithProps,\n> = FunctionSpec_ extends FunctionSpec.AnyWithProps\n ? FunctionSpec.GetFunctionProvenance<FunctionSpec_> extends FunctionProvenance.Convex<\n infer Args_ extends DefaultFunctionArgs,\n infer Returns_\n >\n ? RuntimeAndFunctionType.GetFunctionType<\n FunctionSpec_[\"runtimeAndFunctionType\"]\n > extends \"query\"\n ? RegisteredQuery<\n FunctionSpec.GetFunctionVisibility<FunctionSpec_>,\n Args_,\n Returns_\n >\n : RuntimeAndFunctionType.GetFunctionType<\n FunctionSpec_[\"runtimeAndFunctionType\"]\n > extends \"mutation\"\n ? RegisteredMutation<\n FunctionSpec.GetFunctionVisibility<FunctionSpec_>,\n Args_,\n Returns_\n >\n : RuntimeAndFunctionType.GetFunctionType<\n FunctionSpec_[\"runtimeAndFunctionType\"]\n > extends \"action\"\n ? RegisteredAction<\n FunctionSpec.GetFunctionVisibility<FunctionSpec_>,\n Args_,\n Returns_\n >\n : never\n : never\n : never;\n\nexport type RegisteredFunction<\n FunctionSpec_ extends FunctionSpec.AnyWithProps,\n> =\n FunctionSpec_ extends FunctionSpec.WithFunctionProvenance<\n FunctionSpec_,\n FunctionProvenance.AnyConvex\n >\n ? ConvexRegisteredFunction<FunctionSpec_>\n : FunctionSpec_ extends FunctionSpec.WithFunctionProvenance<\n FunctionSpec_,\n FunctionProvenance.AnyConfect\n >\n ? ConfectRegisteredFunction<FunctionSpec_>\n : never;\n\n/**\n * Wrap a function's handler effect in its resolved middleware chain, per\n * invocation, after args decode. Iterated innermost-first so that the\n * first-attached (group-level, in attachment order) middleware ends up\n * outermost and runs first. Erased types: the public safety story lives at the\n * `MiddlewareSpec.MiddlewareImpl`/`MiddlewareImpl.make` signatures, and the\n * composed effect's error channel is re-accounted by\n * {@link combineErrorSchemas}.\n */\nexport const applyMiddleware = <A, E, R>(\n effect: Effect.Effect<A, E, R>,\n resolvedMiddlewares: ReadonlyArray<ResolvedMiddleware.ResolvedMiddleware>,\n invocation: MiddlewareSpec.MiddlewareOptions[\"invocation\"],\n): Effect.Effect<A, any, R> => {\n return resolvedMiddlewares.reduceRight<Effect.Effect<any, any, any>>(\n // oxlint-disable-next-line effecttsgo/any-unknown-in-error-context -- The erased middleware error remains intact so runHandlerPromise can validate it against the combined error schema.\n (wrapped, middleware) => {\n const context =\n \"options\" in middleware.middlewareSpec\n ? { options: middleware.options, invocation }\n : { invocation };\n // oxlint-disable-next-line effecttsgo/any-unknown-in-error-context -- Resolved middleware is type-erased after its public implementation boundary; its error and service channels are restored by the surrounding function contract.\n return middleware.middlewareImpl(wrapped, context);\n },\n effect,\n );\n};\n\n/**\n * The error-schema allowlist for a function with middleware: the function's own\n * declared `error` schema unioned with every covering middleware's error\n * schema. `undefined` (⇒ every failure dies) only when neither declares\n * one—mirroring the ref-side union clients decode against.\n */\nexport const combineErrorSchemas = (\n error: Schema.Codec<any, any> | undefined,\n resolvedMiddlewares: ReadonlyArray<ResolvedMiddleware.ResolvedMiddleware>,\n): Schema.Codec<any, any> | undefined => {\n const schemas = [\n ...(error !== undefined ? [error] : []),\n ...MiddlewareSpec.errorSchemas(\n resolvedMiddlewares.map(({ middlewareSpec }) => middlewareSpec),\n ),\n ];\n return schemas.length === 0\n ? undefined\n : schemas.length === 1\n ? schemas[0]\n : Schema.Union(schemas);\n};\n\n/**\n * Run the `Effect` as a `Promise`. Inspect the complete `Exit` before encoding\n * a declared error so a typed failure cannot hide a defect.\n *\n * Any `Die` reason takes the defect path. Without a `Die`, the first `Fail` in\n * cause order is schema-encoded and thrown as a `ConvexError` outside the\n * Effect runtime so Convex surfaces its data to the client. Other failures and\n * interruptions alongside that `Fail` are ignored. Without an error schema, the\n * selected failure is treated as a defect.\n *\n * A lone `ConvexError` defect or a selected undeclared `ConvexError` failure is\n * rethrown bare so it keeps Convex's meaning. Pagination and Workpool rely on\n * its data for their control signals. Other causes with a `Die`, interrupt-only\n * or empty causes, and error-encoding failures reject with a plain `Error`\n * whose message renders the complete cause and whose `cause` holds it for\n * server diagnostics.\n *\n * A `scheduler` in `runOptions` must be passed here as a run option rather than\n * provided via `Effect.provideService` inside `effect`: the run option lands in\n * the fiber's root context, while a service provided within `effect` pops\n * before the exit/encoding wrappers this function adds. The fiber's op counter\n * survives context pops, so a cooperative yield can fire inside those wrappers.\n * Only a root-context scheduler covers them.\n */\nexport const runHandlerPromise =\n (\n errorSchema: Schema.Codec<any, any> | undefined,\n runOptions?: {\n readonly scheduler?: EffectScheduler.Scheduler | undefined;\n readonly clock?: Clock.Clock | undefined;\n readonly invocation?: Effect.Effect<FunctionMetadata> | undefined;\n readonly observability?: Layer.Layer<never> | undefined;\n },\n ) =>\n <A, E>(effect: Effect.Effect<A, E>): Promise<A> => {\n const { observability, invocation, clock } = runOptions ?? {};\n let encodedError: Exit.Exit<any, any> | undefined;\n let undeclared: { readonly error: unknown } | undefined;\n const observed = Effect.tapCause(effect, (cause) =>\n Effect.gen(function* () {\n const reason =\n cause.reasons.find(Cause.isDieReason) ??\n cause.reasons.find(Cause.isFailReason);\n if (reason?._tag === \"Fail\" && errorSchema !== undefined) {\n encodedError = yield* Effect.exit(\n Schema.encodeEffect(errorSchema)(reason.error),\n );\n // An encoding failure is a defect, even when it dies with a ConvexError.\n if (Exit.isFailure(encodedError)) {\n const encoding = encodedError.cause;\n return yield* Cause.squash(encoding) instanceof ConvexError\n ? Effect.die(\n new Error(Cause.pretty(encoding), { cause: encoding }),\n )\n : Effect.orDie(encodedError);\n }\n }\n // With no error schema a failure is a defect, so the root span ends as one.\n if (\n reason?._tag === \"Fail\" &&\n errorSchema === undefined &&\n !(reason.error instanceof ConvexError)\n ) {\n undeclared = { error: reason.error };\n return yield* Effect.die(reason.error);\n }\n }),\n );\n const withConvexError: Effect.Effect<Result.Result<A, ConvexError<any>>> =\n Effect.gen(function* () {\n const exit = yield* Effect.exit(\n observability === undefined || invocation === undefined\n ? effect\n : Effect.flatMap(invocation, ({ name, type, componentPath }) =>\n Effect.useSpan(\n name,\n {\n root: true,\n attributes: { kind: type, componentPath },\n },\n (span) =>\n Effect.provideService(observed, Tracer.ParentSpan, span),\n ),\n ),\n );\n if (Exit.isSuccess(exit)) {\n return Result.succeed(exit.value);\n }\n if (undeclared !== undefined)\n return yield* Effect.die(undeclared.error);\n\n const cause =\n encodedError !== undefined && Exit.isFailure(encodedError)\n ? encodedError.cause\n : exit.cause;\n const reason =\n cause.reasons.find(Cause.isDieReason) ??\n cause.reasons.find(Cause.isFailReason);\n if (\n encodedError === undefined &&\n reason?._tag === \"Die\" &&\n cause.reasons.length === 1 &&\n reason.defect instanceof ConvexError\n ) {\n return Result.fail(reason.defect);\n }\n\n if (reason?._tag === \"Fail\") {\n if (errorSchema === undefined) {\n if (reason.error instanceof ConvexError) {\n return Result.fail(reason.error);\n }\n return yield* Effect.die(reason.error);\n }\n const encoded =\n encodedError ??\n (yield* Effect.exit(\n Schema.encodeEffect(errorSchema)(reason.error),\n ));\n if (Exit.isSuccess(encoded)) {\n return Result.fail(new ConvexError(encoded.value));\n }\n return yield* Effect.die(\n new Error(Cause.pretty(encoded.cause), { cause: encoded.cause }),\n );\n }\n return yield* Effect.die(new Error(Cause.pretty(cause), { cause }));\n });\n return Effect.runPromise(\n withConvexError.pipe(\n Effect.provide(\n observability === undefined\n ? ConvexLogger.layer\n : ObservabilityRuntime.memoized(observability),\n ),\n Effect.provideService(Console.Console, globalThis.console),\n clock === undefined\n ? (self) => self\n : Effect.provideService(Clock.Clock, clock),\n ),\n runOptions,\n ).then(\n Result.match({\n onFailure: (error) => {\n throw error;\n },\n onSuccess: (value) => value,\n }),\n );\n };\n\nexport const actionFunctionBase = <\n Schema extends DatabaseSchema.AnyWithProps,\n Args,\n ConvexArgs extends DefaultFunctionArgs,\n Returns,\n ConvexReturns,\n E,\n R,\n>({\n name,\n functionVisibility,\n args,\n returns,\n error,\n handler,\n resolvedMiddlewares = [],\n createLayer,\n scope = IdScope.app,\n observability,\n}: {\n name: string;\n functionVisibility: FunctionVisibility;\n args: Schema.Codec<Args, ConvexArgs>;\n returns: Schema.Codec<Returns, ConvexReturns>;\n error: Schema.Codec<Error, Value> | undefined;\n handler: (a: Args) => Effect.Effect<Returns, E, R>;\n resolvedMiddlewares?: ReadonlyArray<ResolvedMiddleware.ResolvedMiddleware>;\n createLayer: (\n ctx: GenericActionCtx<DataModel.ToConvex<DataModel.FromSchema<Schema>>>,\n ) => Layer.Layer<R>;\n scope?: IdScope.IdScope;\n observability?: Layer.Layer<never> | undefined;\n}) => ({\n args: compileArgsSchema(args, scope),\n returns: compileReturnsSchema(returns, scope),\n handler: (\n ctx: GenericActionCtx<DataModel.ToConvex<DataModel.FromSchema<Schema>>>,\n actualArgs: ConvexArgs,\n ): Promise<ConvexReturns> =>\n Effect.gen(function* () {\n const decodedArgs = yield* pipe(\n actualArgs,\n Schema.decodeUnknownEffect(args),\n Effect.catchTag(\"SchemaError\", Effect.die),\n );\n const restricted = resolvedMiddlewares.some(\n ({ middlewareSpec }) =>\n middlewareSpec.key === ActionCallSpec.Middleware.key,\n )\n ? restrict(ctx)\n : undefined;\n // oxlint-disable-next-line effecttsgo/any-unknown-in-error-context -- Middleware errors are intentionally erased here and validated by runHandlerPromise against the combined error schema below.\n const decodedReturns = yield* applyMiddleware(\n handler(decodedArgs),\n resolvedMiddlewares,\n {\n name,\n functionType: \"action\",\n functionVisibility,\n args: decodedArgs,\n },\n ).pipe(Effect.provide(createLayer(restricted?.ctx ?? ctx)));\n if (restricted !== undefined) yield* restricted.check;\n return yield* pipe(\n decodedReturns,\n Schema.encodeEffect(returns),\n Effect.catchTag(\"SchemaError\", Effect.die),\n );\n }).pipe(\n runHandlerPromise(combineErrorSchemas(error, resolvedMiddlewares), {\n invocation: Effect.promise(() => ctx.meta.getFunctionMetadata()),\n observability,\n }),\n ),\n});\n\nexport type ActionServices<\n DatabaseSchema_ extends DatabaseSchema.AnyWithProps,\n> = Handler.ActionServices<DatabaseSchema_>;\n\n/**\n * The ctx-backed action services that don't depend on a Confect database\n * schema. {@link actionLayer} adds the schema-typed `VectorSearch` on top; the\n * HTTP API handler uses this base directly.\n */\nexport const baseActionLayer = <ConvexDataModel extends GenericDataModel>(\n ctx: GenericActionCtx<ConvexDataModel>,\n) =>\n Layer.mergeAll(\n Scheduler.layer(ctx.scheduler),\n Auth.layer(ctx.auth),\n ExecutionMetadata.layer(ctx.meta),\n RequestMetadata.layer(ctx.meta),\n Storage.layer(ctx.storage),\n StorageWriter.StorageWriter.layer(ctx.storage),\n StorageActionWriter.StorageActionWriter.layer(ctx.storage),\n QueryRunner.layer(ctx.runQuery.bind(ctx)),\n MutationRunner.layer(ctx.runMutation.bind(ctx)),\n ActionRunner.layer(ctx.runAction.bind(ctx)),\n Layer.succeed(ActionCtx.ActionCtx<ConvexDataModel>(), ctx),\n );\n\nexport const actionLayer = <\n DatabaseSchema_ extends DatabaseSchema.AnyWithProps,\n>(\n databaseSchema: DatabaseSchema_,\n ctx: GenericActionCtx<\n DataModel.ToConvex<DataModel.FromSchema<DatabaseSchema_>>\n >,\n) =>\n Layer.mergeAll(\n Scheduler.layer<DatabaseSchema.Scope<DatabaseSchema_>>(\n ctx.scheduler,\n databaseSchema.target.scope,\n ),\n Auth.layerForTarget<DatabaseSchema_[\"target\"]>(\n databaseSchema.target,\n ctx.auth,\n ),\n ExecutionMetadata.layer(ctx.meta),\n RequestMetadata.layer(ctx.meta),\n storageLayer<DatabaseSchema.Scope<DatabaseSchema_>>(ctx.storage),\n StorageWriter.StorageWriter.layer<DatabaseSchema.Scope<DatabaseSchema_>>(\n ctx.storage,\n databaseSchema.target.scope,\n ),\n StorageActionWriter.StorageActionWriter.layer<\n DatabaseSchema.Scope<DatabaseSchema_>\n >(ctx.storage, databaseSchema.target.scope),\n QueryRunner.layer(ctx.runQuery.bind(ctx)),\n MutationRunner.layer(ctx.runMutation.bind(ctx)),\n ActionRunner.layer(ctx.runAction.bind(ctx)),\n ActionCtx.layer<\n DataModel.ToConvex<DataModel.FromSchema<DatabaseSchema_>>,\n DatabaseSchema.Scope<DatabaseSchema_>\n >(ctx, databaseSchema.target.scope),\n VectorSearch.layer(ctx.vectorSearch.bind(ctx)),\n );\n\n// Scoped readers share the same runtime service and ID strings. Reuse the\n// reader supplied by Storage so both APIs keep the same reader instance.\nexport const storageLayer = <Scope extends IdScope.IdScope>(\n reader: ConvexStorageReader,\n): Layer.Layer<Storage.Storage | StorageReader.ForScope<Scope>> =>\n Storage.layer(reader) as Layer.Layer<\n Storage.Storage | StorageReader.ForScope<Scope>\n >;\n\n/**\n * Shares one dispatch budget across the entire middleware chain.\n */\nconst restrict = <Model extends GenericDataModel>(\n ctx: GenericActionCtx<Model>,\n) => {\n let dispatched = false;\n const claim = () => {\n if (dispatched) throw new ActionCall.ActionCallAlreadyUsed();\n dispatched = true;\n };\n const restricted: GenericActionCtx<Model> = {\n ...ctx,\n scheduler: {\n runAfter: () => {\n throw new ActionCall.SchedulingNotAllowed();\n },\n runAt: () => {\n throw new ActionCall.SchedulingNotAllowed();\n },\n cancel: () => {\n throw new ActionCall.SchedulingNotAllowed();\n },\n },\n runQuery: (...args) => {\n claim();\n return ctx.runQuery(...args);\n },\n runMutation: (...args) => {\n claim();\n return ctx.runMutation(...args);\n },\n runAction: () => {\n throw new ActionCall.NestedActionNotAllowed();\n },\n };\n return {\n ctx: restricted,\n check: Effect.suspend(() =>\n dispatched ? Effect.void : Effect.die(new ActionCall.ActionCallNotUsed()),\n ),\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"RegisteredFunction.js","names":["ConvexConfigProvider.layer","ConvexLogger.layer","ObservabilityRuntime.memoized","Scheduler.layer","Auth.layer","ExecutionMetadata.layer","RequestMetadata.layer","Storage.layer","QueryRunner.layer","MutationRunner.layer","ActionRunner.layer","ActionCtx.ActionCtx","Auth.layerForTarget","ActionCtx.layer","VectorSearch.layer","ActionCall.ActionCallAlreadyUsed","ActionCall.SchedulingNotAllowed","ActionCall.NestedActionNotAllowed","ActionCall.ActionCallNotUsed"],"sources":["../src/RegisteredFunction.ts"],"sourcesContent":["export { Forward } from \"./internal/reservedArgument.js\";\nimport * as ActionCallSpec from \"@confect/core/ActionCall\";\nimport * as ActionCall from \"./ActionCall.js\";\nimport type { FunctionSpec, RuntimeAndFunctionType } from \"@confect/core\";\nimport * as IdScope from \"@confect/core/IdScope\";\nimport type * as FunctionProvenance from \"@confect/core/FunctionProvenance\";\nimport * as MiddlewareSpec from \"@confect/core/MiddlewareSpec\";\nimport {\n compileArgsSchema,\n compileReturnsSchema,\n} from \"@confect/core/SchemaToValidator\";\nimport {\n type DefaultFunctionArgs,\n type FunctionVisibility,\n type FunctionMetadata,\n type MutationMeta,\n type GenericActionCtx,\n type GenericDataModel,\n type StorageReader as ConvexStorageReader,\n type RegisteredAction,\n type RegisteredMutation,\n type RegisteredQuery,\n} from \"convex/server\";\nimport type { Value } from \"convex/values\";\nimport { ConvexError } from \"convex/values\";\nimport { pipe } from \"effect/Function\";\nimport * as Config from \"effect/Config\";\nimport * as Option from \"effect/Option\";\nimport * as ConvexConfigProvider from \"./ConvexConfigProvider.js\";\nimport * as Clock from \"effect/Clock\";\nimport * as Cause from \"effect/Cause\";\nimport * as Console from \"effect/Console\";\nimport * as Context from \"effect/Context\";\nimport * as Effect from \"effect/Effect\";\nimport * as Exit from \"effect/Exit\";\nimport * as Result from \"effect/Result\";\nimport * as Layer from \"effect/Layer\";\nimport * as Schema from \"effect/Schema\";\nimport type * as EffectScheduler from \"effect/Scheduler\";\nimport * as ActionCtx from \"./ActionCtx.js\";\nimport * as ActionRunner from \"./ActionRunner.js\";\nimport * as Auth from \"./Auth.js\";\nimport * as ConvexLogger from \"./ConvexLogger.js\";\nimport type * as DatabaseSchema from \"./DatabaseSchema.js\";\nimport type * as DataModel from \"./DataModel.js\";\nimport * as ExecutionMetadata from \"./ExecutionMetadata.js\";\nimport * as RequestMetadata from \"./RequestMetadata.js\";\nimport * as MutationRunner from \"./MutationRunner.js\";\nimport * as QueryRunner from \"./QueryRunner.js\";\nimport type * as ResolvedMiddleware from \"./ResolvedMiddleware.js\";\nimport * as Scheduler from \"./Scheduler.js\";\nimport * as Storage from \"./Storage.js\";\nimport * as StorageActionWriter from \"./StorageActionWriter.js\";\nimport type * as StorageReader from \"./StorageReader.js\";\nimport * as StorageWriter from \"./StorageWriter.js\";\nimport * as Tracer from \"effect/Tracer\";\nimport * as ObservabilityRuntime from \"./internal/observability.js\";\nimport * as VectorSearch from \"./VectorSearch.js\";\nimport type * as Handler from \"./Handler.js\";\n\nexport interface ReceivedValue {\n readonly value: unknown;\n readonly requestId: string;\n readonly deployment: string | undefined;\n}\n\nexport const Received = Context.Reference<ReceivedValue | undefined>(\n \"@confect/server/RegisteredFunction/Received\",\n { defaultValue: () => undefined },\n);\n\nexport const invocationMetadata = (\n meta: Pick<MutationMeta, \"getFunctionMetadata\" | \"getRequestMetadata\">,\n args: DefaultFunctionArgs,\n reservedArgument?: string,\n): Effect.Effect<FunctionMetadata & { readonly received?: ReceivedValue }> =>\n Effect.gen(function* () {\n const metadata = yield* Effect.promise(() => meta.getFunctionMetadata());\n if (reservedArgument === undefined) return metadata;\n const { requestId } = yield* Effect.promise(() =>\n meta.getRequestMetadata(),\n );\n const deployment = yield* Config.String(\"CONVEX_CLOUD_URL\").pipe(\n Config.option,\n Effect.map(Option.getOrUndefined),\n Effect.provide(ConvexConfigProvider.layer),\n Effect.orDie,\n );\n return {\n ...metadata,\n received: { value: args[reservedArgument], requestId, deployment },\n };\n });\n\nexport const Observability = Context.Reference<Layer.Layer<never> | undefined>(\n \"@confect/server/Observability\",\n { defaultValue: () => undefined },\n);\n\nexport type Any =\n | RegisteredQuery<FunctionVisibility, DefaultFunctionArgs, any>\n | RegisteredMutation<FunctionVisibility, DefaultFunctionArgs, any>\n | RegisteredAction<FunctionVisibility, DefaultFunctionArgs, any>;\n\ntype ConfectRegisteredFunction<\n FunctionSpec_ extends FunctionSpec.AnyWithProps,\n> =\n FunctionSpec.EncodedArgs<FunctionSpec_> extends infer Args_ extends\n DefaultFunctionArgs\n ? RuntimeAndFunctionType.GetFunctionType<\n FunctionSpec_[\"runtimeAndFunctionType\"]\n > extends \"query\"\n ? RegisteredQuery<\n FunctionSpec.GetFunctionVisibility<FunctionSpec_>,\n Args_,\n Promise<FunctionSpec.EncodedReturns<FunctionSpec_>>\n >\n : RuntimeAndFunctionType.GetFunctionType<\n FunctionSpec_[\"runtimeAndFunctionType\"]\n > extends \"mutation\"\n ? RegisteredMutation<\n FunctionSpec.GetFunctionVisibility<FunctionSpec_>,\n Args_,\n Promise<FunctionSpec.EncodedReturns<FunctionSpec_>>\n >\n : RuntimeAndFunctionType.GetFunctionType<\n FunctionSpec_[\"runtimeAndFunctionType\"]\n > extends \"action\"\n ? RegisteredAction<\n FunctionSpec.GetFunctionVisibility<FunctionSpec_>,\n Args_,\n Promise<FunctionSpec.EncodedReturns<FunctionSpec_>>\n >\n : never\n : never;\n\nexport type ConvexRegisteredFunction<\n FunctionSpec_ extends FunctionSpec.AnyWithProps,\n> = FunctionSpec_ extends FunctionSpec.AnyWithProps\n ? FunctionSpec.GetFunctionProvenance<FunctionSpec_> extends FunctionProvenance.Convex<\n infer Args_ extends DefaultFunctionArgs,\n infer Returns_\n >\n ? RuntimeAndFunctionType.GetFunctionType<\n FunctionSpec_[\"runtimeAndFunctionType\"]\n > extends \"query\"\n ? RegisteredQuery<\n FunctionSpec.GetFunctionVisibility<FunctionSpec_>,\n Args_,\n Returns_\n >\n : RuntimeAndFunctionType.GetFunctionType<\n FunctionSpec_[\"runtimeAndFunctionType\"]\n > extends \"mutation\"\n ? RegisteredMutation<\n FunctionSpec.GetFunctionVisibility<FunctionSpec_>,\n Args_,\n Returns_\n >\n : RuntimeAndFunctionType.GetFunctionType<\n FunctionSpec_[\"runtimeAndFunctionType\"]\n > extends \"action\"\n ? RegisteredAction<\n FunctionSpec.GetFunctionVisibility<FunctionSpec_>,\n Args_,\n Returns_\n >\n : never\n : never\n : never;\n\nexport type RegisteredFunction<\n FunctionSpec_ extends FunctionSpec.AnyWithProps,\n> =\n FunctionSpec_ extends FunctionSpec.WithFunctionProvenance<\n FunctionSpec_,\n FunctionProvenance.AnyConvex\n >\n ? ConvexRegisteredFunction<FunctionSpec_>\n : FunctionSpec_ extends FunctionSpec.WithFunctionProvenance<\n FunctionSpec_,\n FunctionProvenance.AnyConfect\n >\n ? ConfectRegisteredFunction<FunctionSpec_>\n : never;\n\n/**\n * Wrap a function's handler effect in its resolved middleware chain, per\n * invocation, after args decode. Iterated innermost-first so that the\n * first-attached (group-level, in attachment order) middleware ends up\n * outermost and runs first. Erased types: the public safety story lives at the\n * `MiddlewareSpec.MiddlewareImpl`/`MiddlewareImpl.make` signatures, and the\n * composed effect's error channel is re-accounted by\n * {@link combineErrorSchemas}.\n */\nexport const applyMiddleware = <A, E, R>(\n effect: Effect.Effect<A, E, R>,\n resolvedMiddlewares: ReadonlyArray<ResolvedMiddleware.ResolvedMiddleware>,\n invocation: MiddlewareSpec.MiddlewareOptions[\"invocation\"],\n): Effect.Effect<A, any, R> => {\n return resolvedMiddlewares.reduceRight<Effect.Effect<any, any, any>>(\n // oxlint-disable-next-line effecttsgo/any-unknown-in-error-context -- The erased middleware error remains intact so runHandlerPromise can validate it against the combined error schema.\n (wrapped, middleware) => {\n const context =\n \"options\" in middleware.middlewareSpec\n ? { options: middleware.options, invocation }\n : { invocation };\n // oxlint-disable-next-line effecttsgo/any-unknown-in-error-context -- Resolved middleware is type-erased after its public implementation boundary; its error and service channels are restored by the surrounding function contract.\n return middleware.middlewareImpl(wrapped, context);\n },\n effect,\n );\n};\n\n/**\n * The error-schema allowlist for a function with middleware: the function's own\n * declared `error` schema unioned with every covering middleware's error\n * schema. `undefined` (⇒ every failure dies) only when neither declares\n * one—mirroring the ref-side union clients decode against.\n */\nexport const combineErrorSchemas = (\n error: Schema.Codec<any, any> | undefined,\n resolvedMiddlewares: ReadonlyArray<ResolvedMiddleware.ResolvedMiddleware>,\n): Schema.Codec<any, any> | undefined => {\n const schemas = [\n ...(error !== undefined ? [error] : []),\n ...MiddlewareSpec.errorSchemas(\n resolvedMiddlewares.map(({ middlewareSpec }) => middlewareSpec),\n ),\n ];\n return schemas.length === 0\n ? undefined\n : schemas.length === 1\n ? schemas[0]\n : Schema.Union(schemas);\n};\n\n/**\n * Run the `Effect` as a `Promise`. Inspect the complete `Exit` before encoding\n * a declared error so a typed failure cannot hide a defect.\n *\n * Any `Die` reason takes the defect path. Without a `Die`, the first `Fail` in\n * cause order is schema-encoded and thrown as a `ConvexError` outside the\n * Effect runtime so Convex surfaces its data to the client. Other failures and\n * interruptions alongside that `Fail` are ignored. Without an error schema, the\n * selected failure is treated as a defect.\n *\n * A lone `ConvexError` defect or a selected undeclared `ConvexError` failure is\n * rethrown bare so it keeps Convex's meaning. Pagination and Workpool rely on\n * its data for their control signals. Other causes with a `Die`, interrupt-only\n * or empty causes, and error-encoding failures reject with a plain `Error`\n * whose message renders the complete cause and whose `cause` holds it for\n * server diagnostics.\n *\n * A `scheduler` in `runOptions` must be passed here as a run option rather than\n * provided via `Effect.provideService` inside `effect`: the run option lands in\n * the fiber's root context, while a service provided within `effect` pops\n * before the exit/encoding wrappers this function adds. The fiber's op counter\n * survives context pops, so a cooperative yield can fire inside those wrappers.\n * Only a root-context scheduler covers them.\n */\nexport const runHandlerPromise =\n (\n errorSchema: Schema.Codec<any, any> | undefined,\n runOptions?: {\n readonly scheduler?: EffectScheduler.Scheduler | undefined;\n readonly clock?: Clock.Clock | undefined;\n readonly invocation?:\n | Effect.Effect<\n FunctionMetadata & { readonly received?: ReceivedValue }\n >\n | undefined;\n readonly observability?: Layer.Layer<never> | undefined;\n },\n ) =>\n <A, E>(effect: Effect.Effect<A, E>): Promise<A> => {\n const { observability, invocation, clock } = runOptions ?? {};\n let encodedError: Exit.Exit<any, any> | undefined;\n let undeclared: { readonly error: unknown } | undefined;\n const observed = Effect.tapCause(effect, (cause) =>\n Effect.gen(function* () {\n const reason =\n cause.reasons.find(Cause.isDieReason) ??\n cause.reasons.find(Cause.isFailReason);\n if (reason?._tag === \"Fail\" && errorSchema !== undefined) {\n encodedError = yield* Effect.exit(\n Schema.encodeEffect(errorSchema)(reason.error),\n );\n // An encoding failure is a defect, even when it dies with a ConvexError.\n if (Exit.isFailure(encodedError)) {\n const encoding = encodedError.cause;\n return yield* Cause.squash(encoding) instanceof ConvexError\n ? Effect.die(\n new Error(Cause.pretty(encoding), { cause: encoding }),\n )\n : Effect.orDie(encodedError);\n }\n }\n // With no error schema a failure is a defect, so the root span ends as one.\n if (\n reason?._tag === \"Fail\" &&\n errorSchema === undefined &&\n !(reason.error instanceof ConvexError)\n ) {\n undeclared = { error: reason.error };\n return yield* Effect.die(reason.error);\n }\n }),\n );\n const withConvexError: Effect.Effect<Result.Result<A, ConvexError<any>>> =\n Effect.gen(function* () {\n const exit = yield* Effect.exit(\n observability === undefined || invocation === undefined\n ? effect\n : Effect.flatMap(\n invocation,\n ({ name, type, componentPath, received }) =>\n Effect.useSpan(\n name,\n {\n root: true,\n attributes: { kind: type, componentPath },\n },\n (span) =>\n Effect.provideService(observed, Tracer.ParentSpan, span),\n ).pipe(Effect.provideService(Received, received)),\n ),\n );\n if (Exit.isSuccess(exit)) {\n return Result.succeed(exit.value);\n }\n if (undeclared !== undefined)\n return yield* Effect.die(undeclared.error);\n\n const cause =\n encodedError !== undefined && Exit.isFailure(encodedError)\n ? encodedError.cause\n : exit.cause;\n const reason =\n cause.reasons.find(Cause.isDieReason) ??\n cause.reasons.find(Cause.isFailReason);\n if (\n encodedError === undefined &&\n reason?._tag === \"Die\" &&\n cause.reasons.length === 1 &&\n reason.defect instanceof ConvexError\n ) {\n return Result.fail(reason.defect);\n }\n\n if (reason?._tag === \"Fail\") {\n if (errorSchema === undefined) {\n if (reason.error instanceof ConvexError) {\n return Result.fail(reason.error);\n }\n return yield* Effect.die(reason.error);\n }\n const encoded =\n encodedError ??\n (yield* Effect.exit(\n Schema.encodeEffect(errorSchema)(reason.error),\n ));\n if (Exit.isSuccess(encoded)) {\n return Result.fail(new ConvexError(encoded.value));\n }\n return yield* Effect.die(\n new Error(Cause.pretty(encoded.cause), { cause: encoded.cause }),\n );\n }\n return yield* Effect.die(new Error(Cause.pretty(cause), { cause }));\n });\n return Effect.runPromise(\n withConvexError.pipe(\n Effect.provide(\n observability === undefined\n ? ConvexLogger.layer\n : ObservabilityRuntime.memoized(observability),\n ),\n Effect.provideService(Console.Console, globalThis.console),\n clock === undefined\n ? (self) => self\n : Effect.provideService(Clock.Clock, clock),\n ),\n runOptions,\n ).then(\n Result.match({\n onFailure: (error) => {\n throw error;\n },\n onSuccess: (value) => value,\n }),\n );\n };\n\nexport const domainArgs = (\n args: DefaultFunctionArgs,\n reservedArgument?: string,\n): DefaultFunctionArgs =>\n reservedArgument === undefined\n ? args\n : Object.fromEntries(\n Object.entries(args).filter(([key]) => key !== reservedArgument),\n );\n\nexport const actionFunctionBase = <\n Schema extends DatabaseSchema.AnyWithProps,\n Args,\n ConvexArgs extends DefaultFunctionArgs,\n Returns,\n ConvexReturns,\n E,\n R,\n>({\n name,\n functionVisibility,\n args,\n returns,\n error,\n handler,\n resolvedMiddlewares = [],\n createLayer,\n scope = IdScope.app,\n observability,\n reservedArgument,\n}: {\n name: string;\n reservedArgument?: string | undefined;\n functionVisibility: FunctionVisibility;\n args: Schema.Codec<Args, ConvexArgs>;\n returns: Schema.Codec<Returns, ConvexReturns>;\n error: Schema.Codec<Error, Value> | undefined;\n handler: (a: Args) => Effect.Effect<Returns, E, R>;\n resolvedMiddlewares?: ReadonlyArray<ResolvedMiddleware.ResolvedMiddleware>;\n createLayer: (\n ctx: GenericActionCtx<DataModel.ToConvex<DataModel.FromSchema<Schema>>>,\n ) => Layer.Layer<R>;\n scope?: IdScope.IdScope;\n observability?: Layer.Layer<never> | undefined;\n}) => ({\n args: compileArgsSchema(args, scope, reservedArgument, name),\n returns: compileReturnsSchema(returns, scope),\n handler: (\n ctx: GenericActionCtx<DataModel.ToConvex<DataModel.FromSchema<Schema>>>,\n actualArgs: ConvexArgs,\n ): Promise<ConvexReturns> =>\n Effect.gen(function* () {\n const decodedArgs = yield* pipe(\n domainArgs(actualArgs, reservedArgument),\n Schema.decodeUnknownEffect(args),\n Effect.catchTag(\"SchemaError\", Effect.die),\n );\n const restricted = resolvedMiddlewares.some(\n ({ middlewareSpec }) =>\n middlewareSpec.key === ActionCallSpec.Middleware.key,\n )\n ? restrict(ctx)\n : undefined;\n // oxlint-disable-next-line effecttsgo/any-unknown-in-error-context -- Middleware errors are intentionally erased here and validated by runHandlerPromise against the combined error schema below.\n const decodedReturns = yield* applyMiddleware(\n handler(decodedArgs),\n resolvedMiddlewares,\n {\n name,\n functionType: \"action\",\n functionVisibility,\n args: decodedArgs,\n },\n ).pipe(Effect.provide(createLayer(restricted?.ctx ?? ctx)));\n if (restricted !== undefined) yield* restricted.check;\n return yield* pipe(\n decodedReturns,\n Schema.encodeEffect(returns),\n Effect.catchTag(\"SchemaError\", Effect.die),\n );\n }).pipe(\n runHandlerPromise(combineErrorSchemas(error, resolvedMiddlewares), {\n invocation: invocationMetadata(ctx.meta, actualArgs, reservedArgument),\n observability,\n }),\n ),\n});\n\nexport type ActionServices<\n DatabaseSchema_ extends DatabaseSchema.AnyWithProps,\n> = Handler.ActionServices<DatabaseSchema_>;\n\n/**\n * The ctx-backed action services that don't depend on a Confect database\n * schema. {@link actionLayer} adds the schema-typed `VectorSearch` on top; the\n * HTTP API handler uses this base directly.\n */\nexport const baseActionLayer = <ConvexDataModel extends GenericDataModel>(\n ctx: GenericActionCtx<ConvexDataModel>,\n) =>\n Layer.mergeAll(\n Scheduler.layer(ctx.scheduler),\n Auth.layer(ctx.auth),\n ExecutionMetadata.layer(ctx.meta),\n RequestMetadata.layer(ctx.meta),\n Storage.layer(ctx.storage),\n StorageWriter.StorageWriter.layer(ctx.storage),\n StorageActionWriter.StorageActionWriter.layer(ctx.storage),\n QueryRunner.layer(ctx.runQuery.bind(ctx)),\n MutationRunner.layer(ctx.runMutation.bind(ctx)),\n ActionRunner.layer(ctx.runAction.bind(ctx)),\n Layer.succeed(ActionCtx.ActionCtx<ConvexDataModel>(), ctx),\n );\n\nexport const actionLayer = <\n DatabaseSchema_ extends DatabaseSchema.AnyWithProps,\n>(\n databaseSchema: DatabaseSchema_,\n ctx: GenericActionCtx<\n DataModel.ToConvex<DataModel.FromSchema<DatabaseSchema_>>\n >,\n) =>\n Layer.mergeAll(\n Scheduler.layer<DatabaseSchema.Scope<DatabaseSchema_>>(\n ctx.scheduler,\n databaseSchema.target.scope,\n ),\n Auth.layerForTarget<DatabaseSchema_[\"target\"]>(\n databaseSchema.target,\n ctx.auth,\n ),\n ExecutionMetadata.layer(ctx.meta),\n RequestMetadata.layer(ctx.meta),\n storageLayer<DatabaseSchema.Scope<DatabaseSchema_>>(ctx.storage),\n StorageWriter.StorageWriter.layer<DatabaseSchema.Scope<DatabaseSchema_>>(\n ctx.storage,\n databaseSchema.target.scope,\n ),\n StorageActionWriter.StorageActionWriter.layer<\n DatabaseSchema.Scope<DatabaseSchema_>\n >(ctx.storage, databaseSchema.target.scope),\n QueryRunner.layer(ctx.runQuery.bind(ctx)),\n MutationRunner.layer(ctx.runMutation.bind(ctx)),\n ActionRunner.layer(ctx.runAction.bind(ctx)),\n ActionCtx.layer<\n DataModel.ToConvex<DataModel.FromSchema<DatabaseSchema_>>,\n DatabaseSchema.Scope<DatabaseSchema_>\n >(ctx, databaseSchema.target.scope),\n VectorSearch.layer(ctx.vectorSearch.bind(ctx)),\n );\n\n// Scoped readers share the same runtime service and ID strings. Reuse the\n// reader supplied by Storage so both APIs keep the same reader instance.\nexport const storageLayer = <Scope extends IdScope.IdScope>(\n reader: ConvexStorageReader,\n): Layer.Layer<Storage.Storage | StorageReader.ForScope<Scope>> =>\n Storage.layer(reader) as Layer.Layer<\n Storage.Storage | StorageReader.ForScope<Scope>\n >;\n\n/**\n * Shares one dispatch budget across the entire middleware chain.\n */\nconst restrict = <Model extends GenericDataModel>(\n ctx: GenericActionCtx<Model>,\n) => {\n let dispatched = false;\n const claim = () => {\n if (dispatched) throw new ActionCall.ActionCallAlreadyUsed();\n dispatched = true;\n };\n const restricted: GenericActionCtx<Model> = {\n ...ctx,\n scheduler: {\n runAfter: () => {\n throw new ActionCall.SchedulingNotAllowed();\n },\n runAt: () => {\n throw new ActionCall.SchedulingNotAllowed();\n },\n cancel: () => {\n throw new ActionCall.SchedulingNotAllowed();\n },\n },\n runQuery: (...args) => {\n claim();\n return ctx.runQuery(...args);\n },\n runMutation: (...args) => {\n claim();\n return ctx.runMutation(...args);\n },\n runAction: () => {\n throw new ActionCall.NestedActionNotAllowed();\n },\n };\n return {\n ctx: restricted,\n check: Effect.suspend(() =>\n dispatched ? Effect.void : Effect.die(new ActionCall.ActionCallNotUsed()),\n ),\n };\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"RegisteredNodeFunction.d.ts","sourceRoot":"","sources":["../src/RegisteredNodeFunction.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,KAAK,KAAK,cAAc,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,oBAAoB,MAAM,2BAA2B,CAAC;AAClE,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAC;AAE9D,OAAO,KAAK,KAAK,SAAS,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,KAAK,SAAS,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,KAAK,mBAAmB,MAAM,0BAA0B,CAAC;AAGrE,eAAO,MAAM,aAAa,GAAI,KAAK,SAAS,SAAS,CAAC,YAAY,kBAChD,cAAc,CAAC,YAAY,cAC/B,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,KACxD,mBAAmB,CAAC,+BAA+B,CAAC,KAAK,CAsB3D,CAAC;AAEF,eAAO,MAAM,IAAI,mBACC,cAAc,CAAC,YAAY,QACrC,oBAAoB,CAAC,2BAA2B,wBACjC,aAAa,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,kBACzD,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KACjC,kBAAkB,CAAC,GAmBrB,CAAC"}
1
+ {"version":3,"file":"RegisteredNodeFunction.d.ts","sourceRoot":"","sources":["../src/RegisteredNodeFunction.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,KAAK,KAAK,cAAc,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,oBAAoB,MAAM,2BAA2B,CAAC;AAClE,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAC;AAE9D,OAAO,KAAK,KAAK,SAAS,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,KAAK,SAAS,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,KAAK,mBAAmB,MAAM,0BAA0B,CAAC;AAGrE,eAAO,MAAM,aAAa,GAAI,KAAK,SAAS,SAAS,CAAC,YAAY,kBAChD,cAAc,CAAC,YAAY,cAC/B,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,KACxD,mBAAmB,CAAC,+BAA+B,CAAC,KAAK,CAsB3D,CAAC;AAEF,eAAO,MAAM,IAAI,mBACC,cAAc,CAAC,YAAY,QACrC,oBAAoB,CAAC,2BAA2B,wBACjC,aAAa,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,kBACzD,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KACjC,kBAAkB,CAAC,GAoBrB,CAAC"}
@@ -20,6 +20,7 @@ const buildForGroup = (databaseSchema, groupLayer) => {
20
20
  const make = (databaseSchema, item, resolvedMiddlewares = [], observability) => {
21
21
  return Match.value(item.functionVisibility).pipe(Match.when("public", () => actionGeneric), Match.when("internal", () => internalActionGeneric), Match.exhaustive)(nodeActionFunction(databaseSchema, {
22
22
  name: item.name,
23
+ reservedArgument: item.reservedArgument,
23
24
  observability,
24
25
  functionVisibility: item.functionVisibility,
25
26
  args: item.args,
@@ -29,7 +30,7 @@ const make = (databaseSchema, item, resolvedMiddlewares = [], observability) =>
29
30
  resolvedMiddlewares
30
31
  }));
31
32
  };
32
- const nodeActionFunction = (databaseSchema, { name, functionVisibility, args, returns, error, handler, resolvedMiddlewares, observability }) => actionFunctionBase({
33
+ const nodeActionFunction = (databaseSchema, { name, functionVisibility, args, returns, error, handler, resolvedMiddlewares, observability, reservedArgument }) => actionFunctionBase({
33
34
  scope: databaseSchema.target.scope,
34
35
  name,
35
36
  functionVisibility,
@@ -39,6 +40,7 @@ const nodeActionFunction = (databaseSchema, { name, functionVisibility, args, re
39
40
  handler,
40
41
  resolvedMiddlewares,
41
42
  observability,
43
+ reservedArgument,
42
44
  createLayer: (ctx) => Layer.mergeAll(actionLayer(databaseSchema, ctx), NodeServices.layer)
43
45
  });
44
46
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"RegisteredNodeFunction.js","names":["GroupRegistry.make","FunctionRegistryItem.isFunctionRegistryItem","ResolvedMiddleware.resolve","RegisteredFunction.actionFunctionBase","RegisteredFunction.actionLayer"],"sources":["../src/RegisteredNodeFunction.ts"],"sourcesContent":["import * as NodeServices from \"@effect/platform-node/NodeServices\";\nimport {\n actionGeneric,\n type DefaultFunctionArgs,\n type FunctionVisibility,\n internalActionGeneric,\n} from \"convex/server\";\nimport type { Effect } from \"effect\";\nimport type { Schema } from \"effect\";\nimport * as Layer from \"effect/Layer\";\nimport * as Match from \"effect/Match\";\nimport type * as DatabaseSchema from \"./DatabaseSchema.js\";\nimport * as RegisteredFunction from \"./RegisteredFunction.js\";\nimport * as FunctionRegistryItem from \"./FunctionRegistryItem.js\";\nimport * as ResolvedMiddleware from \"./ResolvedMiddleware.js\";\nimport * as GroupRegistry from \"./GroupRegistry.js\";\nimport type * as GroupSpec from \"@confect/core/GroupSpec\";\nimport type * as GroupImpl from \"./GroupImpl.js\";\nimport type * as RegisteredFunctions from \"./RegisteredFunctions.js\";\nimport { mapLeaves } from \"./internal/utils.js\";\n\nexport const buildForGroup = <Group extends GroupSpec.AnyWithProps>(\n databaseSchema: DatabaseSchema.AnyWithProps,\n groupLayer: Layer.Layer<GroupImpl.GroupImpl<\"Finalized\">>,\n): RegisteredFunctions.RegisteredFunctionsForGroupSpec<Group> => {\n const { functionRegistryItems, middlewareRegistryItems, observability } =\n GroupRegistry.make(groupLayer);\n return mapLeaves<FunctionRegistryItem.AnyWithProps, RegisteredFunction.Any>(\n functionRegistryItems as {\n [key: string]: FunctionRegistryItem.AnyWithProps;\n },\n FunctionRegistryItem.isFunctionRegistryItem,\n (item) =>\n Match.value(item).pipe(\n Match.tag(\"Convex\", ({ handler }) => handler),\n Match.tag(\"Confect\", (confect) =>\n make(\n databaseSchema,\n confect,\n ResolvedMiddleware.resolve(confect, middlewareRegistryItems),\n observability,\n ),\n ),\n Match.exhaustive,\n ),\n ) as RegisteredFunctions.RegisteredFunctionsForGroupSpec<Group>;\n};\n\nexport const make = (\n databaseSchema: DatabaseSchema.AnyWithProps,\n item: FunctionRegistryItem.ConfectFunctionRegistryItem,\n resolvedMiddlewares: ReadonlyArray<ResolvedMiddleware.ResolvedMiddleware> = [],\n observability?: Layer.Layer<never>,\n): RegisteredFunction.Any => {\n const genericFunction = Match.value(item.functionVisibility).pipe(\n Match.when(\"public\", () => actionGeneric),\n Match.when(\"internal\", () => internalActionGeneric),\n Match.exhaustive,\n );\n\n return genericFunction(\n nodeActionFunction(databaseSchema, {\n name: item.name,\n observability,\n functionVisibility: item.functionVisibility,\n args: item.args,\n returns: item.returns,\n error: item.error,\n handler: item.handler,\n resolvedMiddlewares,\n }),\n );\n};\n\nconst nodeActionFunction = <\n DatabaseSchema_ extends DatabaseSchema.AnyWithProps,\n Args,\n ConvexArgs extends DefaultFunctionArgs,\n Returns,\n ConvexReturns,\n E,\n>(\n databaseSchema: DatabaseSchema_,\n {\n name,\n functionVisibility,\n args,\n returns,\n error,\n handler,\n resolvedMiddlewares,\n observability,\n }: {\n name: string;\n functionVisibility: FunctionVisibility;\n args: Schema.Codec<Args, ConvexArgs>;\n returns: Schema.Codec<Returns, ConvexReturns>;\n error: Schema.Codec<any, any> | undefined;\n handler: (\n a: Args,\n ) => Effect.Effect<\n Returns,\n E,\n | RegisteredFunction.ActionServices<DatabaseSchema_>\n | NodeServices.NodeServices\n >;\n resolvedMiddlewares: ReadonlyArray<ResolvedMiddleware.ResolvedMiddleware>;\n observability?: Layer.Layer<never> | undefined;\n },\n) =>\n RegisteredFunction.actionFunctionBase({\n scope: databaseSchema.target.scope,\n name,\n functionVisibility,\n args,\n returns,\n error,\n handler,\n resolvedMiddlewares,\n observability,\n createLayer: (ctx) =>\n Layer.mergeAll(\n RegisteredFunction.actionLayer(databaseSchema, ctx),\n NodeServices.layer,\n ),\n });\n"],"mappings":";;;;;;;;;;;;;;;AAqBA,MAAa,iBACX,gBACA,eAC+D;CAC/D,MAAM,EAAE,uBAAuB,yBAAyB,kBACtDA,OAAmB,UAAU;CAC/B,OAAO,UACL,uBAGAC,yBACC,SACC,MAAM,MAAM,IAAI,CAAC,CAAC,KAChB,MAAM,IAAI,WAAW,EAAE,cAAc,OAAO,GAC5C,MAAM,IAAI,YAAY,YACpB,KACE,gBACA,SACAC,QAA2B,SAAS,uBAAuB,GAC3D,aACF,CACF,GACA,MAAM,UACR,CACJ;AACF;AAEA,MAAa,QACX,gBACA,MACA,sBAA4E,CAAC,GAC7E,kBAC2B;CAO3B,OANwB,MAAM,MAAM,KAAK,kBAAkB,CAAC,CAAC,KAC3D,MAAM,KAAK,gBAAgB,aAAa,GACxC,MAAM,KAAK,kBAAkB,qBAAqB,GAClD,MAAM,UAGa,CAAC,CACpB,mBAAmB,gBAAgB;EACjC,MAAM,KAAK;EACX;EACA,oBAAoB,KAAK;EACzB,MAAM,KAAK;EACX,SAAS,KAAK;EACd,OAAO,KAAK;EACZ,SAAS,KAAK;EACd;CACF,CAAC,CACH;AACF;AAEA,MAAM,sBAQJ,gBACA,EACE,MACA,oBACA,MACA,SACA,OACA,SACA,qBACA,oBAmBFC,mBAAsC;CACpC,OAAO,eAAe,OAAO;CAC7B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,cAAc,QACZ,MAAM,SACJC,YAA+B,gBAAgB,GAAG,GAClD,aAAa,KACf;AACJ,CAAC"}
1
+ {"version":3,"file":"RegisteredNodeFunction.js","names":["GroupRegistry.make","FunctionRegistryItem.isFunctionRegistryItem","ResolvedMiddleware.resolve","RegisteredFunction.actionFunctionBase","RegisteredFunction.actionLayer"],"sources":["../src/RegisteredNodeFunction.ts"],"sourcesContent":["import * as NodeServices from \"@effect/platform-node/NodeServices\";\nimport {\n actionGeneric,\n type DefaultFunctionArgs,\n type FunctionVisibility,\n internalActionGeneric,\n} from \"convex/server\";\nimport type { Effect } from \"effect\";\nimport type { Schema } from \"effect\";\nimport * as Layer from \"effect/Layer\";\nimport * as Match from \"effect/Match\";\nimport type * as DatabaseSchema from \"./DatabaseSchema.js\";\nimport * as RegisteredFunction from \"./RegisteredFunction.js\";\nimport * as FunctionRegistryItem from \"./FunctionRegistryItem.js\";\nimport * as ResolvedMiddleware from \"./ResolvedMiddleware.js\";\nimport * as GroupRegistry from \"./GroupRegistry.js\";\nimport type * as GroupSpec from \"@confect/core/GroupSpec\";\nimport type * as GroupImpl from \"./GroupImpl.js\";\nimport type * as RegisteredFunctions from \"./RegisteredFunctions.js\";\nimport { mapLeaves } from \"./internal/utils.js\";\n\nexport const buildForGroup = <Group extends GroupSpec.AnyWithProps>(\n databaseSchema: DatabaseSchema.AnyWithProps,\n groupLayer: Layer.Layer<GroupImpl.GroupImpl<\"Finalized\">>,\n): RegisteredFunctions.RegisteredFunctionsForGroupSpec<Group> => {\n const { functionRegistryItems, middlewareRegistryItems, observability } =\n GroupRegistry.make(groupLayer);\n return mapLeaves<FunctionRegistryItem.AnyWithProps, RegisteredFunction.Any>(\n functionRegistryItems as {\n [key: string]: FunctionRegistryItem.AnyWithProps;\n },\n FunctionRegistryItem.isFunctionRegistryItem,\n (item) =>\n Match.value(item).pipe(\n Match.tag(\"Convex\", ({ handler }) => handler),\n Match.tag(\"Confect\", (confect) =>\n make(\n databaseSchema,\n confect,\n ResolvedMiddleware.resolve(confect, middlewareRegistryItems),\n observability,\n ),\n ),\n Match.exhaustive,\n ),\n ) as RegisteredFunctions.RegisteredFunctionsForGroupSpec<Group>;\n};\n\nexport const make = (\n databaseSchema: DatabaseSchema.AnyWithProps,\n item: FunctionRegistryItem.ConfectFunctionRegistryItem,\n resolvedMiddlewares: ReadonlyArray<ResolvedMiddleware.ResolvedMiddleware> = [],\n observability?: Layer.Layer<never>,\n): RegisteredFunction.Any => {\n const genericFunction = Match.value(item.functionVisibility).pipe(\n Match.when(\"public\", () => actionGeneric),\n Match.when(\"internal\", () => internalActionGeneric),\n Match.exhaustive,\n );\n\n return genericFunction(\n nodeActionFunction(databaseSchema, {\n name: item.name,\n reservedArgument: item.reservedArgument,\n observability,\n functionVisibility: item.functionVisibility,\n args: item.args,\n returns: item.returns,\n error: item.error,\n handler: item.handler,\n resolvedMiddlewares,\n }),\n );\n};\n\nconst nodeActionFunction = <\n DatabaseSchema_ extends DatabaseSchema.AnyWithProps,\n Args,\n ConvexArgs extends DefaultFunctionArgs,\n Returns,\n ConvexReturns,\n E,\n>(\n databaseSchema: DatabaseSchema_,\n {\n name,\n functionVisibility,\n args,\n returns,\n error,\n handler,\n resolvedMiddlewares,\n observability,\n reservedArgument,\n }: {\n name: string;\n reservedArgument?: string | undefined;\n functionVisibility: FunctionVisibility;\n args: Schema.Codec<Args, ConvexArgs>;\n returns: Schema.Codec<Returns, ConvexReturns>;\n error: Schema.Codec<any, any> | undefined;\n handler: (\n a: Args,\n ) => Effect.Effect<\n Returns,\n E,\n | RegisteredFunction.ActionServices<DatabaseSchema_>\n | NodeServices.NodeServices\n >;\n resolvedMiddlewares: ReadonlyArray<ResolvedMiddleware.ResolvedMiddleware>;\n observability?: Layer.Layer<never> | undefined;\n },\n) =>\n RegisteredFunction.actionFunctionBase({\n scope: databaseSchema.target.scope,\n name,\n functionVisibility,\n args,\n returns,\n error,\n handler,\n resolvedMiddlewares,\n observability,\n reservedArgument,\n createLayer: (ctx) =>\n Layer.mergeAll(\n RegisteredFunction.actionLayer(databaseSchema, ctx),\n NodeServices.layer,\n ),\n });\n"],"mappings":";;;;;;;;;;;;;;;AAqBA,MAAa,iBACX,gBACA,eAC+D;CAC/D,MAAM,EAAE,uBAAuB,yBAAyB,kBACtDA,OAAmB,UAAU;CAC/B,OAAO,UACL,uBAGAC,yBACC,SACC,MAAM,MAAM,IAAI,CAAC,CAAC,KAChB,MAAM,IAAI,WAAW,EAAE,cAAc,OAAO,GAC5C,MAAM,IAAI,YAAY,YACpB,KACE,gBACA,SACAC,QAA2B,SAAS,uBAAuB,GAC3D,aACF,CACF,GACA,MAAM,UACR,CACJ;AACF;AAEA,MAAa,QACX,gBACA,MACA,sBAA4E,CAAC,GAC7E,kBAC2B;CAO3B,OANwB,MAAM,MAAM,KAAK,kBAAkB,CAAC,CAAC,KAC3D,MAAM,KAAK,gBAAgB,aAAa,GACxC,MAAM,KAAK,kBAAkB,qBAAqB,GAClD,MAAM,UAGa,CAAC,CACpB,mBAAmB,gBAAgB;EACjC,MAAM,KAAK;EACX,kBAAkB,KAAK;EACvB;EACA,oBAAoB,KAAK;EACzB,MAAM,KAAK;EACX,SAAS,KAAK;EACd,OAAO,KAAK;EACZ,SAAS,KAAK;EACd;CACF,CAAC,CACH;AACF;AAEA,MAAM,sBAQJ,gBACA,EACE,MACA,oBACA,MACA,SACA,OACA,SACA,qBACA,eACA,uBAoBFC,mBAAsC;CACpC,OAAO,eAAe,OAAO;CAC7B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,cAAc,QACZ,MAAM,SACJC,YAA+B,gBAAgB,GAAG,GAClD,aAAa,KACf;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Scheduler.d.ts","sourceRoot":"","sources":["../src/Scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,OAAO,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,IAAI,eAAe,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,IAAI,eAAe,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAuCtC,eAAO,MAAM,SAAS;iBApCP,eAAe,CAAC,sBAAsB,CAAC;eAEzC,IAAI,SAAS,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,SAAS,SAC9C,QAAQ,CAAC,QAAQ,OACnB,IAAI,WACA,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC;YAazB,IAAI,SAAS,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,SAAS,YACxC,QAAQ,CAAC,QAAQ,OACtB,IAAI,WACA,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC;;;;;EAiBlC,CAAC;AACF,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC,UAAU,CAAC;AAEpD,MAAM,WAAW,OAAO,CAAC,KAAK,SAAS,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG;IAClE,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,sBAAsB,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1E,QAAQ,CAAC,IAAI,SAAS,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,SAAS,EACnD,KAAK,EAAE,QAAQ,CAAC,QAAQ,EACxB,GAAG,EAAE,IAAI,EACT,GAAG,IAAI,EAAE,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,GAC9B,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC,CAAC;IAC3D,KAAK,CAAC,IAAI,SAAS,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,SAAS,EAChD,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAC3B,GAAG,EAAE,IAAI,EACT,GAAG,IAAI,EAAE,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,GAC9B,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC,CAAC;CAC5D;AAED,MAAM,MAAM,QAAQ,CAAC,KAAK,SAAS,OAAO,CAAC,OAAO,IAAI,KAAK,SAAS,OAAO,CAAC,GAAG,GAC3E,SAAS,GACT;IAAE,QAAQ,CAAC,kBAAkB,EAAE,KAAK,CAAA;CAAE,CAAC;AAE3C,eAAO,MAAM,QAAQ,GACnB,KAAK,SAAS,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,OACxC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CACN,CAAC;AAE/C,eAAO,MAAM,KAAK,GAAI,KAAK,SAAS,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,aACpD,eAAe,WACjB,KAAK,+CAMb,CAAC"}
1
+ {"version":3,"file":"Scheduler.d.ts","sourceRoot":"","sources":["../src/Scheduler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,OAAO,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,IAAI,eAAe,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,IAAI,eAAe,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAmCtC,eAAO,MAAM,SAAS;iBAhCP,eAAe,CAAC,sBAAsB,CAAC;eAGlD,IAAI,SAAS,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,SAAS;YAc5C,IAAI,SAAS,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,SAAS;;;;;EAiB/C,CAAC;AACF,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC,UAAU,CAAC;AAEpD,MAAM,WAAW,OAAO,CAAC,KAAK,SAAS,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG;IAClE,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,sBAAsB,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1E,QAAQ,CAAC,IAAI,SAAS,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,SAAS,EACnD,KAAK,EAAE,QAAQ,CAAC,QAAQ,EACxB,GAAG,EAAE,IAAI,EACT,GAAG,IAAI,EAAE,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,GAC9B,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC,CAAC;IAC3D,KAAK,CAAC,IAAI,SAAS,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,SAAS,EAChD,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAC3B,GAAG,EAAE,IAAI,EACT,GAAG,IAAI,EAAE,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,GAC9B,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC,CAAC;CAC5D;AAED,MAAM,MAAM,QAAQ,CAAC,KAAK,SAAS,OAAO,CAAC,OAAO,IAAI,KAAK,SAAS,OAAO,CAAC,GAAG,GAC3E,SAAS,GACT;IAAE,QAAQ,CAAC,kBAAkB,EAAE,KAAK,CAAA;CAAE,CAAC;AAE3C,eAAO,MAAM,QAAQ,GACnB,KAAK,SAAS,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,OACxC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CACN,CAAC;AAE/C,eAAO,MAAM,KAAK,GAAI,KAAK,SAAS,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,aACpD,eAAe,WACjB,KAAK,+CAMb,CAAC"}
package/dist/Scheduler.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { __exportAll } from "./_virtual/_rolldown/runtime.js";
2
+ import { encodeArgs } from "./internal/reservedArgument.js";
2
3
  import * as Context from "effect/Context";
3
4
  import * as Effect from "effect/Effect";
4
5
  import * as Layer from "effect/Layer";
@@ -13,18 +14,18 @@ var Scheduler_exports = /* @__PURE__ */ __exportAll({
13
14
  });
14
15
  const make = (scheduler) => ({
15
16
  cancel: (id) => Effect.promise(() => scheduler.cancel(id)),
16
- runAfter: (delay, ref, ...args) => {
17
+ runAfter: Effect.fn("Scheduler.runAfter")(function* (delay, ref, ...args) {
17
18
  const delayMs = Duration.toMillis(delay);
18
19
  const functionReference = Ref.getFunctionReference(ref);
19
- const encodedArgs = Ref.encodeArgsSync(ref, args[0] ?? {});
20
- return Effect.promise(() => scheduler.runAfter(delayMs, functionReference, encodedArgs));
21
- },
22
- runAt: (dateTime, ref, ...args) => {
20
+ const encodedArgs = yield* encodeArgs(ref, args[0] ?? {});
21
+ return yield* Effect.promise(() => scheduler.runAfter(delayMs, functionReference, encodedArgs));
22
+ }),
23
+ runAt: Effect.fn("Scheduler.runAt")(function* (dateTime, ref, ...args) {
23
24
  const timestamp = DateTime.toEpochMillis(dateTime);
24
25
  const functionReference = Ref.getFunctionReference(ref);
25
- const encodedArgs = Ref.encodeArgsSync(ref, args[0] ?? {});
26
- return Effect.promise(() => scheduler.runAt(timestamp, functionReference, encodedArgs));
27
- }
26
+ const encodedArgs = yield* encodeArgs(ref, args[0] ?? {});
27
+ return yield* Effect.promise(() => scheduler.runAt(timestamp, functionReference, encodedArgs));
28
+ })
28
29
  });
29
30
  const Scheduler = Context.Service("@confect/server/Scheduler");
30
31
  const forScope = () => Context.Service("@confect/server/Scheduler");
@@ -1 +1 @@
1
- {"version":3,"file":"Scheduler.js","names":[],"sources":["../src/Scheduler.ts"],"sourcesContent":["import type * as IdScope from \"@confect/core/IdScope\";\nimport { Ref } from \"@confect/core\";\nimport type { GenericId } from \"@confect/core/GenericId\";\nimport type { Scheduler as ConvexScheduler } from \"convex/server\";\nimport type { GenericId as ConvexGenericId } from \"convex/values\";\nimport * as Context from \"effect/Context\";\nimport * as DateTime from \"effect/DateTime\";\nimport * as Duration from \"effect/Duration\";\nimport * as Effect from \"effect/Effect\";\nimport * as Layer from \"effect/Layer\";\n\nconst make = (scheduler: ConvexScheduler) => ({\n cancel: (id: ConvexGenericId<\"_scheduled_functions\">) =>\n Effect.promise(() => scheduler.cancel(id)),\n runAfter: <Ref_ extends Ref.AnyMutation | Ref.AnyAction>(\n delay: Duration.Duration,\n ref: Ref_,\n ...args: Ref.OptionalArgs<Ref_>\n ) => {\n const delayMs = Duration.toMillis(delay);\n const functionReference = Ref.getFunctionReference(ref);\n const encodedArgs = Ref.encodeArgsSync(\n ref,\n (args[0] ?? {}) as Ref.Args<Ref_>,\n );\n\n return Effect.promise(() =>\n scheduler.runAfter(delayMs, functionReference, encodedArgs),\n );\n },\n runAt: <Ref_ extends Ref.AnyMutation | Ref.AnyAction>(\n dateTime: DateTime.DateTime,\n ref: Ref_,\n ...args: Ref.OptionalArgs<Ref_>\n ) => {\n const timestamp = DateTime.toEpochMillis(dateTime);\n const functionReference = Ref.getFunctionReference(ref);\n const encodedArgs = Ref.encodeArgsSync(\n ref,\n (args[0] ?? {}) as Ref.Args<Ref_>,\n );\n\n return Effect.promise(() =>\n scheduler.runAt(timestamp, functionReference, encodedArgs),\n );\n },\n});\n\nexport const Scheduler = Context.Service<ReturnType<typeof make>>(\n \"@confect/server/Scheduler\",\n);\nexport type Scheduler = typeof Scheduler.Identifier;\n\nexport interface Service<Scope extends IdScope.IdScope = IdScope.App> {\n cancel(id: GenericId<\"_scheduled_functions\", Scope>): Effect.Effect<void>;\n runAfter<Ref_ extends Ref.AnyMutation | Ref.AnyAction>(\n delay: Duration.Duration,\n ref: Ref_,\n ...args: Ref.OptionalArgs<Ref_>\n ): Effect.Effect<GenericId<\"_scheduled_functions\", Scope>>;\n runAt<Ref_ extends Ref.AnyMutation | Ref.AnyAction>(\n dateTime: DateTime.DateTime,\n ref: Ref_,\n ...args: Ref.OptionalArgs<Ref_>\n ): Effect.Effect<GenericId<\"_scheduled_functions\", Scope>>;\n}\n\nexport type ForScope<Scope extends IdScope.IdScope> = Scope extends IdScope.App\n ? Scheduler\n : { readonly \"~ScopedScheduler\": Scope };\n\nexport const forScope = <\n Scope extends IdScope.IdScope = IdScope.App,\n>(): Context.Service<ForScope<Scope>, Service<Scope>> =>\n Context.Service(\"@confect/server/Scheduler\");\n\nexport const layer = <Scope extends IdScope.IdScope = IdScope.App>(\n scheduler: ConvexScheduler,\n _scope?: Scope,\n) =>\n // Scopes are phantom: Convex still receives and returns the same ID strings.\n Layer.succeed(\n forScope<Scope>(),\n make(scheduler) as unknown as Service<Scope>,\n );\n"],"mappings":";;;;;;;;;;;;;AAWA,MAAM,QAAQ,eAAgC;CAC5C,SAAS,OACP,OAAO,cAAc,UAAU,OAAO,EAAE,CAAC;CAC3C,WACE,OACA,KACA,GAAG,SACA;EACH,MAAM,UAAU,SAAS,SAAS,KAAK;EACvC,MAAM,oBAAoB,IAAI,qBAAqB,GAAG;EACtD,MAAM,cAAc,IAAI,eACtB,KACC,KAAK,MAAM,CAAC,CACf;EAEA,OAAO,OAAO,cACZ,UAAU,SAAS,SAAS,mBAAmB,WAAW,CAC5D;CACF;CACA,QACE,UACA,KACA,GAAG,SACA;EACH,MAAM,YAAY,SAAS,cAAc,QAAQ;EACjD,MAAM,oBAAoB,IAAI,qBAAqB,GAAG;EACtD,MAAM,cAAc,IAAI,eACtB,KACC,KAAK,MAAM,CAAC,CACf;EAEA,OAAO,OAAO,cACZ,UAAU,MAAM,WAAW,mBAAmB,WAAW,CAC3D;CACF;AACF;AAEA,MAAa,YAAY,QAAQ,QAC/B,2BACF;AAqBA,MAAa,iBAGX,QAAQ,QAAQ,2BAA2B;AAE7C,MAAa,SACX,WACA,WAGA,MAAM,QACJ,SAAgB,GAChB,KAAK,SAAS,CAChB"}
1
+ {"version":3,"file":"Scheduler.js","names":["ReservedArgument.encodeArgs"],"sources":["../src/Scheduler.ts"],"sourcesContent":["import * as ReservedArgument from \"./internal/reservedArgument.js\";\nimport type * as IdScope from \"@confect/core/IdScope\";\nimport { Ref } from \"@confect/core\";\nimport type { GenericId } from \"@confect/core/GenericId\";\nimport type { Scheduler as ConvexScheduler } from \"convex/server\";\nimport type { GenericId as ConvexGenericId } from \"convex/values\";\nimport * as Context from \"effect/Context\";\nimport * as DateTime from \"effect/DateTime\";\nimport * as Duration from \"effect/Duration\";\nimport * as Effect from \"effect/Effect\";\nimport * as Layer from \"effect/Layer\";\n\nconst make = (scheduler: ConvexScheduler) => ({\n cancel: (id: ConvexGenericId<\"_scheduled_functions\">) =>\n Effect.promise(() => scheduler.cancel(id)),\n runAfter: Effect.fn(\"Scheduler.runAfter\")(function* <\n Ref_ extends Ref.AnyMutation | Ref.AnyAction,\n >(delay: Duration.Duration, ref: Ref_, ...args: Ref.OptionalArgs<Ref_>) {\n const delayMs = Duration.toMillis(delay);\n const functionReference = Ref.getFunctionReference(ref);\n const encodedArgs = yield* ReservedArgument.encodeArgs(\n ref,\n (args[0] ?? {}) as Ref.Args<Ref_>,\n );\n\n return yield* Effect.promise(() =>\n scheduler.runAfter(delayMs, functionReference, encodedArgs),\n );\n }),\n runAt: Effect.fn(\"Scheduler.runAt\")(function* <\n Ref_ extends Ref.AnyMutation | Ref.AnyAction,\n >(dateTime: DateTime.DateTime, ref: Ref_, ...args: Ref.OptionalArgs<Ref_>) {\n const timestamp = DateTime.toEpochMillis(dateTime);\n const functionReference = Ref.getFunctionReference(ref);\n const encodedArgs = yield* ReservedArgument.encodeArgs(\n ref,\n (args[0] ?? {}) as Ref.Args<Ref_>,\n );\n\n return yield* Effect.promise(() =>\n scheduler.runAt(timestamp, functionReference, encodedArgs),\n );\n }),\n});\n\nexport const Scheduler = Context.Service<ReturnType<typeof make>>(\n \"@confect/server/Scheduler\",\n);\nexport type Scheduler = typeof Scheduler.Identifier;\n\nexport interface Service<Scope extends IdScope.IdScope = IdScope.App> {\n cancel(id: GenericId<\"_scheduled_functions\", Scope>): Effect.Effect<void>;\n runAfter<Ref_ extends Ref.AnyMutation | Ref.AnyAction>(\n delay: Duration.Duration,\n ref: Ref_,\n ...args: Ref.OptionalArgs<Ref_>\n ): Effect.Effect<GenericId<\"_scheduled_functions\", Scope>>;\n runAt<Ref_ extends Ref.AnyMutation | Ref.AnyAction>(\n dateTime: DateTime.DateTime,\n ref: Ref_,\n ...args: Ref.OptionalArgs<Ref_>\n ): Effect.Effect<GenericId<\"_scheduled_functions\", Scope>>;\n}\n\nexport type ForScope<Scope extends IdScope.IdScope> = Scope extends IdScope.App\n ? Scheduler\n : { readonly \"~ScopedScheduler\": Scope };\n\nexport const forScope = <\n Scope extends IdScope.IdScope = IdScope.App,\n>(): Context.Service<ForScope<Scope>, Service<Scope>> =>\n Context.Service(\"@confect/server/Scheduler\");\n\nexport const layer = <Scope extends IdScope.IdScope = IdScope.App>(\n scheduler: ConvexScheduler,\n _scope?: Scope,\n) =>\n // Scopes are phantom: Convex still receives and returns the same ID strings.\n Layer.succeed(\n forScope<Scope>(),\n make(scheduler) as unknown as Service<Scope>,\n );\n"],"mappings":";;;;;;;;;;;;;;AAYA,MAAM,QAAQ,eAAgC;CAC5C,SAAS,OACP,OAAO,cAAc,UAAU,OAAO,EAAE,CAAC;CAC3C,UAAU,OAAO,GAAG,oBAAoB,CAAC,CAAC,WAExC,OAA0B,KAAW,GAAG,MAA8B;EACtE,MAAM,UAAU,SAAS,SAAS,KAAK;EACvC,MAAM,oBAAoB,IAAI,qBAAqB,GAAG;EACtD,MAAM,cAAc,OAAOA,WACzB,KACC,KAAK,MAAM,CAAC,CACf;EAEA,OAAO,OAAO,OAAO,cACnB,UAAU,SAAS,SAAS,mBAAmB,WAAW,CAC5D;CACF,CAAC;CACD,OAAO,OAAO,GAAG,iBAAiB,CAAC,CAAC,WAElC,UAA6B,KAAW,GAAG,MAA8B;EACzE,MAAM,YAAY,SAAS,cAAc,QAAQ;EACjD,MAAM,oBAAoB,IAAI,qBAAqB,GAAG;EACtD,MAAM,cAAc,OAAOA,WACzB,KACC,KAAK,MAAM,CAAC,CACf;EAEA,OAAO,OAAO,OAAO,cACnB,UAAU,MAAM,WAAW,mBAAmB,WAAW,CAC3D;CACF,CAAC;AACH;AAEA,MAAa,YAAY,QAAQ,QAC/B,2BACF;AAqBA,MAAa,iBAGX,QAAQ,QAAQ,2BAA2B;AAE7C,MAAa,SACX,WACA,WAGA,MAAM,QACJ,SAAgB,GAChB,KAAK,SAAS,CAChB"}
@@ -0,0 +1,8 @@
1
+ import * as Ref from "@confect/core/Ref";
2
+ import * as Context from "effect/Context";
3
+ import * as Effect from "effect/Effect";
4
+ import * as Tracer from "effect/Tracer";
5
+ export declare const Forward: Context.Reference<((span: Tracer.Span) => unknown) | undefined>;
6
+ export declare const runWithCodec: <Ref_ extends Ref.Any>(ref: Ref_, args: Ref.Args<Ref_>, call: (native: Ref.FunctionReference<Ref_>, encoded: unknown) => PromiseLike<unknown>) => Effect.Effect<Ref.Returns<Ref_>, import("effect/Schema").SchemaError | Ref.Error<Ref_>, never>;
7
+ export declare const encodeArgs: <Ref_ extends Ref.Any>(ref: Ref_, args: Ref.Args<Ref_>) => Effect.Effect<unknown, never, never>;
8
+ //# sourceMappingURL=reservedArgument.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reservedArgument.d.ts","sourceRoot":"","sources":["../../src/internal/reservedArgument.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,GAAG,MAAM,mBAAmB,CAAC;AACzC,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,eAAO,MAAM,OAAO,4BACV,MAAM,CAAC,IAAI,KAAK,OAAO,cAG/B,CAAC;AAyBH,eAAO,MAAM,YAAY,GAAI,IAAI,SAAS,GAAG,CAAC,GAAG,OAC1C,IAAI,QACH,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QACd,CACJ,MAAM,EAAE,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,EACnC,OAAO,EAAE,OAAO,KACb,WAAW,CAAC,OAAO,CAAC,mGAMxB,CAAC;AAEJ,eAAO,MAAM,UAAU,GAAI,IAAI,SAAS,GAAG,CAAC,GAAG,OACxC,IAAI,QACH,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,yCAInB,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { convexToJson } from "convex/values";
2
+ import * as Ref from "@confect/core/Ref";
3
+ import * as Context from "effect/Context";
4
+ import * as Effect from "effect/Effect";
5
+ import * as Tracer from "effect/Tracer";
6
+ //#region src/internal/reservedArgument.ts
7
+ const Forward = Context.Reference("@confect/server/RegisteredFunction/Forward", { defaultValue: () => void 0 });
8
+ const inject = (ref, encoded, context) => {
9
+ if (ref.reservedArgument === void 0 || ref.functionType === "query") return encoded;
10
+ const forward = Context.get(context, Forward);
11
+ const span = Context.getOrUndefined(context, Tracer.ParentSpan);
12
+ if (forward === void 0 || span?._tag !== "Span") return encoded;
13
+ try {
14
+ const value = forward(span);
15
+ if (value === void 0) return encoded;
16
+ convexToJson(value);
17
+ return {
18
+ ...encoded,
19
+ [ref.reservedArgument]: value
20
+ };
21
+ } catch {
22
+ return encoded;
23
+ }
24
+ };
25
+ const runWithCodec = (ref, args, call) => Effect.withFiber((fiber) => Ref.runWithCodec(ref, args, (native, encoded) => call(native, inject(ref, encoded, fiber.context))));
26
+ const encodeArgs = (ref, args) => Effect.withFiberSucceed((fiber) => inject(ref, Ref.encodeArgsSync(ref, args), fiber.context));
27
+ //#endregion
28
+ export { Forward, encodeArgs, runWithCodec };
29
+
30
+ //# sourceMappingURL=reservedArgument.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reservedArgument.js","names":[],"sources":["../../src/internal/reservedArgument.ts"],"sourcesContent":["import { convexToJson, type Value } from \"convex/values\";\nimport * as Ref from \"@confect/core/Ref\";\nimport * as Context from \"effect/Context\";\nimport * as Effect from \"effect/Effect\";\nimport * as Tracer from \"effect/Tracer\";\n\nexport const Forward = Context.Reference<\n ((span: Tracer.Span) => unknown) | undefined\n>(\"@confect/server/RegisteredFunction/Forward\", {\n defaultValue: () => undefined,\n});\n\nconst inject = (\n ref: Ref.Any,\n encoded: unknown,\n context: Context.Context<never>,\n): unknown => {\n if (ref.reservedArgument === undefined || ref.functionType === \"query\")\n return encoded;\n const forward = Context.get(context, Forward);\n const span = Context.getOrUndefined(context, Tracer.ParentSpan);\n if (forward === undefined || span?._tag !== \"Span\") return encoded;\n try {\n const value = forward(span);\n if (value === undefined) return encoded;\n convexToJson(value as Value);\n return {\n ...(encoded as Record<string, unknown>),\n [ref.reservedArgument]: value,\n };\n } catch {\n return encoded;\n }\n};\n\nexport const runWithCodec = <Ref_ extends Ref.Any>(\n ref: Ref_,\n args: Ref.Args<Ref_>,\n call: (\n native: Ref.FunctionReference<Ref_>,\n encoded: unknown,\n ) => PromiseLike<unknown>,\n) =>\n Effect.withFiber((fiber) =>\n Ref.runWithCodec(ref, args, (native, encoded) =>\n call(native, inject(ref, encoded, fiber.context)),\n ),\n );\n\nexport const encodeArgs = <Ref_ extends Ref.Any>(\n ref: Ref_,\n args: Ref.Args<Ref_>,\n) =>\n Effect.withFiberSucceed((fiber) =>\n inject(ref, Ref.encodeArgsSync(ref, args), fiber.context),\n );\n"],"mappings":";;;;;;AAMA,MAAa,UAAU,QAAQ,UAE7B,8CAA8C,EAC9C,oBAAoB,KAAA,EACtB,CAAC;AAED,MAAM,UACJ,KACA,SACA,YACY;CACZ,IAAI,IAAI,qBAAqB,KAAA,KAAa,IAAI,iBAAiB,SAC7D,OAAO;CACT,MAAM,UAAU,QAAQ,IAAI,SAAS,OAAO;CAC5C,MAAM,OAAO,QAAQ,eAAe,SAAS,OAAO,UAAU;CAC9D,IAAI,YAAY,KAAA,KAAa,MAAM,SAAS,QAAQ,OAAO;CAC3D,IAAI;EACF,MAAM,QAAQ,QAAQ,IAAI;EAC1B,IAAI,UAAU,KAAA,GAAW,OAAO;EAChC,aAAa,KAAc;EAC3B,OAAO;GACL,GAAI;IACH,IAAI,mBAAmB;EAC1B;CACF,QAAQ;EACN,OAAO;CACT;AACF;AAEA,MAAa,gBACX,KACA,MACA,SAKA,OAAO,WAAW,UAChB,IAAI,aAAa,KAAK,OAAO,QAAQ,YACnC,KAAK,QAAQ,OAAO,KAAK,SAAS,MAAM,OAAO,CAAC,CAClD,CACF;AAEF,MAAa,cACX,KACA,SAEA,OAAO,kBAAkB,UACvB,OAAO,KAAK,IAAI,eAAe,KAAK,IAAI,GAAG,MAAM,OAAO,CAC1D"}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@gaganref/confect-server",
3
- "version": "10.3.1-fork.41",
3
+ "version": "10.3.1-fork.43",
4
4
  "dependencies": {
5
5
  "@effect/ai-openai-compat": "4.0.4",
6
6
  "@effect/ai-openrouter": "4.0.4"
7
7
  },
8
8
  "peerDependencies": {
9
- "@confect/core": "npm:@gaganref/confect-core@10.3.1-fork.41",
9
+ "@confect/core": "npm:@gaganref/confect-core@10.3.1-fork.43",
10
10
  "@effect/platform-node": ">=4.0.0 <4.1.0",
11
11
  "convex": "^1.48.0",
12
12
  "effect": ">=4.0.4 <4.1.0"
package/src/ActionCall.ts CHANGED
@@ -1,5 +1,6 @@
1
+ import * as ReservedArgument from "./internal/reservedArgument.js";
1
2
  import * as ActionCall from "@confect/core/ActionCall";
2
- import * as Ref from "@confect/core/Ref";
3
+ import type * as Ref from "@confect/core/Ref";
3
4
  import type { FunctionReference } from "convex/server";
4
5
  import * as Context from "effect/Context";
5
6
  import * as Data from "effect/Data";
@@ -50,7 +51,7 @@ export const layer = <S extends DatabaseSchema.AnyWithProps>(schema: S) =>
50
51
  claimed = true;
51
52
  if (ref.functionType !== "query" && ref.functionType !== "mutation")
52
53
  return Effect.die(new MissingFunctionType());
53
- return Ref.runWithCodec(
54
+ return ReservedArgument.runWithCodec(
54
55
  ref,
55
56
  (args[0] ?? {}) as Ref.Args<Target>,
56
57
  (native, encoded) =>
@@ -64,7 +65,7 @@ export const layer = <S extends DatabaseSchema.AnyWithProps>(schema: S) =>
64
65
  encoded as never,
65
66
  ),
66
67
  );
67
- });
68
+ }).pipe(Effect.withSpan("ActionCall.call"));
68
69
  return yield* effect.pipe(
69
70
  Effect.provideService(ActionCall.ActionCall, call),
70
71
  Effect.updateContext(