@gaganref/confect-server 10.3.1-fork.40 → 10.3.1-fork.42

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.
@@ -15,6 +15,7 @@ export interface ConfectFunctionRegistryItem {
15
15
  readonly [TypeId]: TypeId;
16
16
  readonly _tag: "Confect";
17
17
  readonly name: string;
18
+ readonly reservedArgument?: string;
18
19
  readonly functionVisibility: FunctionVisibility;
19
20
  readonly functionType: FunctionType;
20
21
  readonly args: Schema.Codec<any, any>;
@@ -1 +1 @@
1
- {"version":3,"file":"FunctionRegistryItem.d.ts","sourceRoot":"","sources":["../src/FunctionRegistryItem.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,oBAAoB,MAAM,oCAAoC,CAAC;AAChF,OAAO,KAAK,KAAK,YAAY,MAAM,4BAA4B,CAAC;AAEhE,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAGtE,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,KAAK,OAAO,MAAM,cAAc,CAAC;AAE7C,eAAO,MAAM,MAAM,0CAA0C,CAAC;AAC9D,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC;AAEnC,eAAO,MAAM,sBAAsB,UAAW,OAAO,KAAG,KAAK,IAAI,YAC3B,CAAC;AAMvC;;;GAGG;AACH,MAAM,MAAM,YAAY,GACpB,2BAA2B,GAC3B,0BAA0B,CAAC;AAE/B,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAChD,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACzC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxC,QAAQ,CAAC,qBAAqB,EAAE,aAAa,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;IACzF,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,oBAAoB,CAAC;CAChD;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,mBAAmB,CAAC;CAC/C;AAED,eAAO,MAAM,IAAI,2DAId;IACD,YAAY,EAAE,YAAY,CAAC,YAAY,CAAC;IACxC,0BAA0B,EAAE,aAAa,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;IACrF,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC;CACtB,KAAG,YA8BD,CAAC"}
1
+ {"version":3,"file":"FunctionRegistryItem.d.ts","sourceRoot":"","sources":["../src/FunctionRegistryItem.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,oBAAoB,MAAM,oCAAoC,CAAC;AAChF,OAAO,KAAK,KAAK,YAAY,MAAM,4BAA4B,CAAC;AAEhE,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAGtE,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,KAAK,OAAO,MAAM,cAAc,CAAC;AAE7C,eAAO,MAAM,MAAM,0CAA0C,CAAC;AAC9D,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC;AAEnC,eAAO,MAAM,sBAAsB,UAAW,OAAO,KAAG,KAAK,IAAI,YAC3B,CAAC;AAMvC;;;GAGG;AACH,MAAM,MAAM,YAAY,GACpB,2BAA2B,GAC3B,0BAA0B,CAAC;AAE/B,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAChD,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACzC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxC,QAAQ,CAAC,qBAAqB,EAAE,aAAa,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;IACzF,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,oBAAoB,CAAC;CAChD;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,mBAAmB,CAAC;CAC/C;AAED,eAAO,MAAM,IAAI,2DAId;IACD,YAAY,EAAE,YAAY,CAAC,YAAY,CAAC;IACxC,0BAA0B,EAAE,aAAa,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;IACrF,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC;CACtB,KAAG,YAiCD,CAAC"}
@@ -18,6 +18,7 @@ const make = ({ functionSpec, groupMiddlewareAttachments, handler }) => Match.va
18
18
  const item = Object.assign(Object.create(FunctionRegistryItemProto), {
19
19
  _tag: "Confect",
20
20
  name: functionSpec.name,
21
+ ...functionSpec.reservedArgument === void 0 ? {} : { reservedArgument: functionSpec.reservedArgument },
21
22
  functionVisibility: functionSpec.functionVisibility,
22
23
  functionType: functionSpec.runtimeAndFunctionType.functionType,
23
24
  middlewareAttachments: [...groupMiddlewareAttachments, ...functionSpec.middlewareAttachments],
@@ -1 +1 @@
1
- {"version":3,"file":"FunctionRegistryItem.js","names":[],"sources":["../src/FunctionRegistryItem.ts"],"sourcesContent":["import type * as MiddlewareAttachment from \"@confect/core/MiddlewareAttachment\";\nimport type * as FunctionSpec from \"@confect/core/FunctionSpec\";\nimport * as Lazy from \"@confect/core/Lazy\";\nimport type { FunctionType, FunctionVisibility } from \"convex/server\";\nimport * as Match from \"effect/Match\";\nimport * as Predicate from \"effect/Predicate\";\nimport type * as Schema from \"effect/Schema\";\nimport type * as Handler from \"./Handler.js\";\n\nexport const TypeId = \"~@confect/server/FunctionRegistryItem\";\nexport type TypeId = typeof TypeId;\n\nexport const isFunctionRegistryItem = (value: unknown): value is AnyWithProps =>\n Predicate.hasProperty(value, TypeId);\n\nconst FunctionRegistryItemProto = {\n [TypeId]: TypeId,\n};\n\n/**\n * A function registered by `FunctionImpl.make`, one of two shapes keyed by the\n * spec's provenance.\n */\nexport type AnyWithProps =\n | ConfectFunctionRegistryItem\n | ConvexFunctionRegistryItem;\n\nexport interface ConfectFunctionRegistryItem {\n readonly [TypeId]: TypeId;\n readonly _tag: \"Confect\";\n readonly name: string;\n readonly functionVisibility: FunctionVisibility;\n readonly functionType: FunctionType;\n readonly args: Schema.Codec<any, any>;\n readonly returns: Schema.Codec<any, any>;\n readonly error?: Schema.Codec<any, any>;\n readonly middlewareAttachments: ReadonlyArray<MiddlewareAttachment.MiddlewareAttachment>;\n readonly handler: Handler.AnyConfectProvenance;\n}\n\nexport interface ConvexFunctionRegistryItem {\n readonly [TypeId]: TypeId;\n readonly _tag: \"Convex\";\n readonly handler: Handler.AnyConvexProvenance;\n}\n\nexport const make = ({\n functionSpec,\n groupMiddlewareAttachments,\n handler,\n}: {\n functionSpec: FunctionSpec.AnyWithProps;\n groupMiddlewareAttachments: ReadonlyArray<MiddlewareAttachment.MiddlewareAttachment>;\n handler: Handler.Any;\n}): AnyWithProps =>\n Match.value(functionSpec.functionProvenance).pipe(\n Match.tag(\"Convex\", (): AnyWithProps =>\n Object.assign(Object.create(FunctionRegistryItemProto), {\n _tag: \"Convex\" as const,\n handler: handler as Handler.AnyConvexProvenance,\n }),\n ),\n Match.tag(\"Confect\", (provenance): AnyWithProps => {\n const item = Object.assign(Object.create(FunctionRegistryItemProto), {\n _tag: \"Confect\" as const,\n name: functionSpec.name,\n functionVisibility: functionSpec.functionVisibility,\n functionType: functionSpec.runtimeAndFunctionType.functionType,\n middlewareAttachments: [\n ...groupMiddlewareAttachments,\n ...functionSpec.middlewareAttachments,\n ],\n handler: handler as Handler.AnyConfectProvenance,\n });\n\n Lazy.defineProperty(item, \"args\", () => provenance.args);\n Lazy.defineProperty(item, \"returns\", () => provenance.returns);\n if (\"error\" in provenance) {\n Lazy.defineProperty(item, \"error\", () => provenance.error);\n }\n\n return item as AnyWithProps;\n }),\n Match.exhaustive,\n );\n"],"mappings":";;;;;;;;;;AASA,MAAa,SAAS;AAGtB,MAAa,0BAA0B,UACrC,UAAU,YAAY,OAAO,MAAM;AAErC,MAAM,4BAA4B,GAC/B,SAAS,OACZ;AA6BA,MAAa,QAAQ,EACnB,cACA,4BACA,cAMA,MAAM,MAAM,aAAa,kBAAkB,CAAC,CAAC,KAC3C,MAAM,IAAI,gBACR,OAAO,OAAO,OAAO,OAAO,yBAAyB,GAAG;CACtD,MAAM;CACG;AACX,CAAC,CACH,GACA,MAAM,IAAI,YAAY,eAA6B;CACjD,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,yBAAyB,GAAG;EACnE,MAAM;EACN,MAAM,aAAa;EACnB,oBAAoB,aAAa;EACjC,cAAc,aAAa,uBAAuB;EAClD,uBAAuB,CACrB,GAAG,4BACH,GAAG,aAAa,qBAClB;EACS;CACX,CAAC;CAED,KAAK,eAAe,MAAM,cAAc,WAAW,IAAI;CACvD,KAAK,eAAe,MAAM,iBAAiB,WAAW,OAAO;CAC7D,IAAI,WAAW,YACb,KAAK,eAAe,MAAM,eAAe,WAAW,KAAK;CAG3D,OAAO;AACT,CAAC,GACD,MAAM,UACR"}
1
+ {"version":3,"file":"FunctionRegistryItem.js","names":[],"sources":["../src/FunctionRegistryItem.ts"],"sourcesContent":["import type * as MiddlewareAttachment from \"@confect/core/MiddlewareAttachment\";\nimport type * as FunctionSpec from \"@confect/core/FunctionSpec\";\nimport * as Lazy from \"@confect/core/Lazy\";\nimport type { FunctionType, FunctionVisibility } from \"convex/server\";\nimport * as Match from \"effect/Match\";\nimport * as Predicate from \"effect/Predicate\";\nimport type * as Schema from \"effect/Schema\";\nimport type * as Handler from \"./Handler.js\";\n\nexport const TypeId = \"~@confect/server/FunctionRegistryItem\";\nexport type TypeId = typeof TypeId;\n\nexport const isFunctionRegistryItem = (value: unknown): value is AnyWithProps =>\n Predicate.hasProperty(value, TypeId);\n\nconst FunctionRegistryItemProto = {\n [TypeId]: TypeId,\n};\n\n/**\n * A function registered by `FunctionImpl.make`, one of two shapes keyed by the\n * spec's provenance.\n */\nexport type AnyWithProps =\n | ConfectFunctionRegistryItem\n | ConvexFunctionRegistryItem;\n\nexport interface ConfectFunctionRegistryItem {\n readonly [TypeId]: TypeId;\n readonly _tag: \"Confect\";\n readonly name: string;\n readonly reservedArgument?: string;\n readonly functionVisibility: FunctionVisibility;\n readonly functionType: FunctionType;\n readonly args: Schema.Codec<any, any>;\n readonly returns: Schema.Codec<any, any>;\n readonly error?: Schema.Codec<any, any>;\n readonly middlewareAttachments: ReadonlyArray<MiddlewareAttachment.MiddlewareAttachment>;\n readonly handler: Handler.AnyConfectProvenance;\n}\n\nexport interface ConvexFunctionRegistryItem {\n readonly [TypeId]: TypeId;\n readonly _tag: \"Convex\";\n readonly handler: Handler.AnyConvexProvenance;\n}\n\nexport const make = ({\n functionSpec,\n groupMiddlewareAttachments,\n handler,\n}: {\n functionSpec: FunctionSpec.AnyWithProps;\n groupMiddlewareAttachments: ReadonlyArray<MiddlewareAttachment.MiddlewareAttachment>;\n handler: Handler.Any;\n}): AnyWithProps =>\n Match.value(functionSpec.functionProvenance).pipe(\n Match.tag(\"Convex\", (): AnyWithProps =>\n Object.assign(Object.create(FunctionRegistryItemProto), {\n _tag: \"Convex\" as const,\n handler: handler as Handler.AnyConvexProvenance,\n }),\n ),\n Match.tag(\"Confect\", (provenance): AnyWithProps => {\n const item = Object.assign(Object.create(FunctionRegistryItemProto), {\n _tag: \"Confect\" as const,\n name: functionSpec.name,\n ...(functionSpec.reservedArgument === undefined\n ? {}\n : { reservedArgument: functionSpec.reservedArgument }),\n functionVisibility: functionSpec.functionVisibility,\n functionType: functionSpec.runtimeAndFunctionType.functionType,\n middlewareAttachments: [\n ...groupMiddlewareAttachments,\n ...functionSpec.middlewareAttachments,\n ],\n handler: handler as Handler.AnyConfectProvenance,\n });\n\n Lazy.defineProperty(item, \"args\", () => provenance.args);\n Lazy.defineProperty(item, \"returns\", () => provenance.returns);\n if (\"error\" in provenance) {\n Lazy.defineProperty(item, \"error\", () => provenance.error);\n }\n\n return item as AnyWithProps;\n }),\n Match.exhaustive,\n );\n"],"mappings":";;;;;;;;;;AASA,MAAa,SAAS;AAGtB,MAAa,0BAA0B,UACrC,UAAU,YAAY,OAAO,MAAM;AAErC,MAAM,4BAA4B,GAC/B,SAAS,OACZ;AA8BA,MAAa,QAAQ,EACnB,cACA,4BACA,cAMA,MAAM,MAAM,aAAa,kBAAkB,CAAC,CAAC,KAC3C,MAAM,IAAI,gBACR,OAAO,OAAO,OAAO,OAAO,yBAAyB,GAAG;CACtD,MAAM;CACG;AACX,CAAC,CACH,GACA,MAAM,IAAI,YAAY,eAA6B;CACjD,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,yBAAyB,GAAG;EACnE,MAAM;EACN,MAAM,aAAa;EACnB,GAAI,aAAa,qBAAqB,KAAA,IAClC,CAAC,IACD,EAAE,kBAAkB,aAAa,iBAAiB;EACtD,oBAAoB,aAAa;EACjC,cAAc,aAAa,uBAAuB;EAClD,uBAAuB,CACrB,GAAG,4BACH,GAAG,aAAa,qBAClB;EACS;CACX,CAAC;CAED,KAAK,eAAe,MAAM,cAAc,WAAW,IAAI;CACvD,KAAK,eAAe,MAAM,iBAAiB,WAAW,OAAO;CAC7D,IAAI,WAAW,YACb,KAAK,eAAe,MAAM,eAAe,WAAW,KAAK;CAG3D,OAAO;AACT,CAAC,GACD,MAAM,UACR"}
@@ -329,9 +329,10 @@ export declare const mutationLayer: <Schema extends DatabaseSchema.AnyWithProps>
329
329
  };
330
330
  } | Scheduler.ForScope<DatabaseSchema.Scope<Schema>> | import("./StorageReader.js").ForScope<DatabaseSchema.Scope<Schema>> | import("./StorageWriter.js").ForScope<DatabaseSchema.Scope<Schema>> | Auth.ForTarget<Schema["target"]> | MutationCtx.MutationCtx<DataModel.ToConvex<DataModel.FromSchema<Schema>>, DatabaseSchema.Scope<Schema>>, never, never>;
331
331
  export type MutationServices<Schema extends DatabaseSchema.AnyWithProps> = Handler.MutationServices<Schema>;
332
- declare const mutationFunction: <DatabaseSchema_ extends DatabaseSchema.AnyWithProps, Args, ConvexArgs extends DefaultFunctionArgs, Returns, ConvexReturns, E>({ databaseSchema, name, functionVisibility, args, returns, error, handler, resolvedMiddlewares, observability, }: {
332
+ declare const mutationFunction: <DatabaseSchema_ extends DatabaseSchema.AnyWithProps, Args, ConvexArgs extends DefaultFunctionArgs, Returns, ConvexReturns, E>({ databaseSchema, name, functionVisibility, args, returns, error, handler, resolvedMiddlewares, observability, reservedArgument, }: {
333
333
  databaseSchema: DatabaseSchema_;
334
334
  name: string;
335
+ reservedArgument?: string | undefined;
335
336
  functionVisibility: FunctionVisibility;
336
337
  args: Schema.Codec<Args, ConvexArgs>;
337
338
  returns: Schema.Codec<Returns, ConvexReturns>;
@@ -344,8 +345,9 @@ declare const mutationFunction: <DatabaseSchema_ extends DatabaseSchema.AnyWithP
344
345
  returns: import("convex/values").Validator<any, any, any>;
345
346
  handler: (ctx: GenericMutationCtx<DataModel.ToConvex<DataModel.FromSchema<DatabaseSchema_>>>, actualArgs: ConvexArgs) => Promise<ConvexReturns>;
346
347
  };
347
- declare const convexActionFunction: <DatabaseSchema_ extends DatabaseSchema.AnyWithProps, Args, ConvexArgs extends DefaultFunctionArgs, Returns, ConvexReturns, E>(schema: DatabaseSchema_, { name, functionVisibility, args, returns, error, handler, resolvedMiddlewares, observability, }: {
348
+ declare const convexActionFunction: <DatabaseSchema_ extends DatabaseSchema.AnyWithProps, Args, ConvexArgs extends DefaultFunctionArgs, Returns, ConvexReturns, E>(schema: DatabaseSchema_, { name, functionVisibility, args, returns, error, handler, resolvedMiddlewares, observability, reservedArgument, }: {
348
349
  name: string;
350
+ reservedArgument?: string | undefined;
349
351
  functionVisibility: FunctionVisibility;
350
352
  args: Schema.Codec<Args, ConvexArgs>;
351
353
  returns: Schema.Codec<Returns, ConvexReturns>;
@@ -1 +1 @@
1
- {"version":3,"file":"RegisteredConvexFunction.d.ts","sourceRoot":"","sources":["../src/RegisteredConvexFunction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RegisteredConvexFunction.d.ts","sourceRoot":"","sources":["../src/RegisteredConvexFunction.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ import { layer as layer$5 } from "./ConvexConfigProvider.js";
9
9
  import { layer as layer$6 } from "./ExecutionMetadata.js";
10
10
  import { layer as layer$7 } from "./RequestMetadata.js";
11
11
  import { StorageWriter } from "./StorageWriter.js";
12
- import { actionFunctionBase, actionLayer, applyMiddleware, combineErrorSchemas, runHandlerPromise, storageLayer } from "./RegisteredFunction.js";
12
+ import { actionFunctionBase, actionLayer, applyMiddleware, combineErrorSchemas, domainArgs, runHandlerPromise, storageLayer } from "./RegisteredFunction.js";
13
13
  import { layer as layer$8 } from "./DatabaseReader.js";
14
14
  import { layer as layer$9 } from "./DatabaseWriter.js";
15
15
  import { layer as layer$10 } from "./TransactionMetadata.js";
@@ -52,6 +52,7 @@ const prepare = (databaseSchema, item, resolvedMiddlewares = [], observability)
52
52
  const definition = mutationFunction({
53
53
  databaseSchema,
54
54
  name: item.name,
55
+ reservedArgument: item.reservedArgument,
55
56
  observability,
56
57
  functionVisibility: item.functionVisibility,
57
58
  args: item.args,
@@ -64,6 +65,7 @@ const prepare = (databaseSchema, item, resolvedMiddlewares = [], observability)
64
65
  }), Match.when("action", () => {
65
66
  const definition = convexActionFunction(databaseSchema, {
66
67
  name: item.name,
68
+ reservedArgument: item.reservedArgument,
67
69
  observability,
68
70
  functionVisibility: item.functionVisibility,
69
71
  args: item.args,
@@ -131,11 +133,11 @@ const queryFunction = ({ databaseSchema, name, functionVisibility, args, returns
131
133
  }))
132
134
  });
133
135
  const mutationLayer = (schema, ctx) => Layer.mergeAll(layer$8(schema, ctx.db), layer$9(schema, ctx.db), layer$6(ctx.meta), layer$7(ctx.meta), layer$10(ctx.meta), layerForTarget(schema.target, ctx.auth), mutationLayer$1(ctx.auth), layer$4(ctx.scheduler, schema.target.scope), storageLayer(ctx.storage), StorageWriter.layer(ctx.storage, schema.target.scope), layer$3(ctx.runQuery), layer$1(ctx.runMutation), layer$2(ctx), layer(ctx), layer$11(ctx, schema.target.scope), layer$5);
134
- const mutationFunction = ({ databaseSchema, name, functionVisibility, args, returns, error, handler, resolvedMiddlewares, observability }) => ({
135
- args: compileArgsSchema(args, databaseSchema.target.scope),
136
+ const mutationFunction = ({ databaseSchema, name, functionVisibility, args, returns, error, handler, resolvedMiddlewares, observability, reservedArgument }) => ({
137
+ args: compileArgsSchema(args, databaseSchema.target.scope, reservedArgument, name),
136
138
  returns: compileReturnsSchema(returns, databaseSchema.target.scope),
137
139
  handler: (ctx, actualArgs) => Effect.gen(function* () {
138
- const decodedArgs = yield* pipe(actualArgs, Schema.decodeUnknownEffect(args), Effect.catchTag("SchemaError", Effect.die));
140
+ const decodedArgs = yield* pipe(domainArgs(actualArgs, reservedArgument), Schema.decodeUnknownEffect(args), Effect.catchTag("SchemaError", Effect.die));
139
141
  const decodedReturns = yield* applyMiddleware(handler(decodedArgs), resolvedMiddlewares, {
140
142
  name,
141
143
  functionType: "mutation",
@@ -149,7 +151,7 @@ const mutationFunction = ({ databaseSchema, name, functionVisibility, args, retu
149
151
  observability
150
152
  }))
151
153
  });
152
- const convexActionFunction = (schema, { name, functionVisibility, args, returns, error, handler, resolvedMiddlewares, observability }) => actionFunctionBase({
154
+ const convexActionFunction = (schema, { name, functionVisibility, args, returns, error, handler, resolvedMiddlewares, observability, reservedArgument }) => actionFunctionBase({
153
155
  scope: schema.target.scope,
154
156
  name,
155
157
  functionVisibility,
@@ -159,6 +161,7 @@ const convexActionFunction = (schema, { name, functionVisibility, args, returns,
159
161
  handler,
160
162
  resolvedMiddlewares,
161
163
  observability,
164
+ reservedArgument,
162
165
  createLayer: (ctx) => Layer.mergeAll(actionLayer(schema, ctx), layer$5)
163
166
  });
164
167
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"RegisteredConvexFunction.js","names":["RegisteredFunction.applyMiddleware","DatabaseReader.layer","ExecutionMetadata.layer","TransactionMetadata.layer","QueryTransactionContext.layer","Auth.layerForTarget","RegisteredFunction.storageLayer","QueryRunner.layer","QueryCtx.layer","ConvexConfigProvider.layer","RegisteredFunction.runHandlerPromise","RegisteredFunction.combineErrorSchemas","DatabaseWriter.layer","RequestMetadata.layer","Auth.mutationLayer","Scheduler.layer","MutationRunner.layer","MutationTransactionContext.layer","MutationCtx.layer","RegisteredFunction.actionFunctionBase","RegisteredFunction.actionLayer"],"sources":["../src/RegisteredConvexFunction.ts"],"sourcesContent":["import {\n compileArgsSchema,\n compileReturnsSchema,\n} from \"@confect/core/SchemaToValidator\";\nimport {\n actionGeneric,\n type DefaultFunctionArgs,\n type FunctionVisibility,\n type GenericMutationCtx,\n type GenericQueryCtx,\n internalActionGeneric,\n internalMutationGeneric,\n internalQueryGeneric,\n mutationGeneric,\n queryGeneric,\n} from \"convex/server\";\nimport type { Value } from \"convex/values\";\nimport { pipe } from \"effect/Function\";\nimport * as Clock from \"effect/Clock\";\nimport * as Data from \"effect/Data\";\nimport * as Duration from \"effect/Duration\";\nimport * as Effect from \"effect/Effect\";\nimport * as Layer from \"effect/Layer\";\nimport * as Match from \"effect/Match\";\nimport * as Schema from \"effect/Schema\";\nimport * as EffectScheduler from \"effect/Scheduler\";\nimport * as Auth from \"./Auth.js\";\nimport * as ConvexConfigProvider from \"./ConvexConfigProvider.js\";\nimport * as DatabaseReader from \"./DatabaseReader.js\";\nimport type * as DatabaseSchema from \"./DatabaseSchema.js\";\nimport * as DatabaseWriter from \"./DatabaseWriter.js\";\nimport type * as DataModel from \"./DataModel.js\";\nimport * as ExecutionMetadata from \"./ExecutionMetadata.js\";\nimport * as RequestMetadata from \"./RequestMetadata.js\";\nimport * as TransactionMetadata from \"./TransactionMetadata.js\";\nimport * as MutationCtx from \"./MutationCtx.js\";\nimport * as MutationRunner from \"./MutationRunner.js\";\nimport * as MutationTransactionContext from \"./MutationTransactionContext.js\";\nimport * as QueryCtx from \"./QueryCtx.js\";\nimport * as QueryRunner from \"./QueryRunner.js\";\nimport * as QueryTransactionContext from \"./QueryTransactionContext.js\";\nimport * as RegisteredFunction from \"./RegisteredFunction.js\";\nimport type * as FunctionRegistryItem from \"./FunctionRegistryItem.js\";\nimport type * as ResolvedMiddleware from \"./ResolvedMiddleware.js\";\nimport * as Scheduler from \"./Scheduler.js\";\nimport { StorageWriter } from \"./StorageWriter.js\";\nimport type * as Handler from \"./Handler.js\";\n\nexport type Definition = Data.TaggedEnum<{\n PublicQuery: ReturnType<typeof queryFunction>;\n InternalQuery: ReturnType<typeof queryFunction>;\n PublicMutation: ReturnType<typeof mutationFunction>;\n InternalMutation: ReturnType<typeof mutationFunction>;\n PublicAction: ReturnType<typeof convexActionFunction>;\n InternalAction: ReturnType<typeof convexActionFunction>;\n Registered: { readonly handler: RegisteredFunction.Any };\n}>;\nexport const Definition = Data.taggedEnum<Definition>();\n\nexport const prepare = (\n databaseSchema: DatabaseSchema.AnyWithProps,\n item: FunctionRegistryItem.ConfectFunctionRegistryItem,\n resolvedMiddlewares: ReadonlyArray<ResolvedMiddleware.ResolvedMiddleware> = [],\n observability?: Layer.Layer<never>,\n) =>\n Match.value(item.functionType).pipe(\n Match.when(\"query\", () => {\n const definition = queryFunction({\n 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 return Match.value(item.functionVisibility).pipe(\n Match.when(\"public\", () => Definition.PublicQuery(definition)),\n Match.when(\"internal\", () => Definition.InternalQuery(definition)),\n Match.exhaustive,\n );\n }),\n Match.when(\"mutation\", () => {\n const definition = mutationFunction({\n 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 return Match.value(item.functionVisibility).pipe(\n Match.when(\"public\", () => Definition.PublicMutation(definition)),\n Match.when(\"internal\", () => Definition.InternalMutation(definition)),\n Match.exhaustive,\n );\n }),\n Match.when(\"action\", () => {\n const definition = convexActionFunction(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 return Match.value(item.functionVisibility).pipe(\n Match.when(\"public\", () => Definition.PublicAction(definition)),\n Match.when(\"internal\", () => Definition.InternalAction(definition)),\n Match.exhaustive,\n );\n }),\n Match.exhaustive,\n );\n\nexport const make = (\n databaseSchema: DatabaseSchema.AnyWithProps,\n item: FunctionRegistryItem.ConfectFunctionRegistryItem,\n resolvedMiddlewares: ReadonlyArray<ResolvedMiddleware.ResolvedMiddleware> = [],\n): RegisteredFunction.Any =>\n register(prepare(databaseSchema, item, resolvedMiddlewares));\n\nexport const register = (self: Definition): RegisteredFunction.Any =>\n Definition.$match(self, {\n PublicQuery: (definition) => queryGeneric(definition),\n InternalQuery: (definition) => internalQueryGeneric(definition),\n PublicMutation: (definition) => mutationGeneric(definition),\n InternalMutation: (definition) => internalMutationGeneric(definition),\n PublicAction: (definition) => actionGeneric(definition),\n InternalAction: (definition) => internalActionGeneric(definition),\n Registered: ({ handler }) => handler,\n });\n\n/**\n * Convex evicts a query from its cache once the execution observes the current\n * time (every `Date.now()` read is tracked). Effect's logging, span, and\n * elapsed-time machinery reads timestamps through the ambient `Clock`'s unsafe\n * accessors, which would silently opt any logging or timing query out of the\n * cache—and there is no untracked time source in the isolate to serve them\n * from, since Effect's own live clock falls back to `Date.now()` for monotonic\n * time when neither `process.hrtime` nor `performance.now` exists. Queries\n * therefore run with a `Clock` whose unsafe accessors all return constants, so\n * logging and spans never touch the tracker and `Effect.timed` and duration\n * metrics report a zero elapsed time, while the effectful accessors\n * (`Clock.currentTimeMillis`/`currentTimeNanos`/`monotonicTimeNanos`) read the\n * real time, making them an explicit opt-in to cache eviction. Raw `Date.now()`\n * calls in handler code likewise opt out honestly.\n */\nconst queryClock: Clock.Clock = {\n currentTimeMillisUnsafe: () => 0,\n currentTimeNanosUnsafe: () => 0n,\n monotonicTimeNanosUnsafe: () => 0n,\n // oxlint-disable-next-line effecttsgo/global-date-in-effect -- This access intentionally notifies Convex's query-cache tracker.\n currentTimeMillis: Effect.sync(() => Date.now()),\n // oxlint-disable-next-line effecttsgo/global-date-in-effect -- This access intentionally notifies Convex's query-cache tracker.\n currentTimeNanos: Effect.sync(() => BigInt(Date.now()) * 1_000_000n),\n // oxlint-disable-next-line effecttsgo/global-date-in-effect -- This access intentionally notifies Convex's query-cache tracker.\n monotonicTimeNanos: Effect.sync(() => BigInt(Date.now()) * 1_000_000n),\n // `Effect.sleep` resolves the ambient clock, so it cannot be used here—it\n // would recurse straight back into this `sleep`.\n sleep: (duration) =>\n Effect.callback<void>((resume) => {\n // oxlint-disable-next-line effecttsgo/global-timers-in-effect -- Effect.sleep would resolve this Clock and recurse.\n const handle = setTimeout(\n () => resume(Effect.void),\n Duration.toMillis(duration),\n );\n return Effect.sync(() => clearTimeout(handle));\n }),\n};\n\nconst queryFunction = <\n DatabaseSchema_ extends DatabaseSchema.AnyWithProps,\n Args,\n ConvexArgs extends DefaultFunctionArgs,\n Returns,\n ConvexReturns,\n E,\n>({\n databaseSchema,\n name,\n functionVisibility,\n args,\n returns,\n error,\n handler,\n resolvedMiddlewares,\n observability,\n}: {\n databaseSchema: DatabaseSchema_;\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: (\n a: Args,\n ) => Effect.Effect<Returns, E, Handler.QueryServices<DatabaseSchema_>>;\n resolvedMiddlewares: ReadonlyArray<ResolvedMiddleware.ResolvedMiddleware>;\n observability?: Layer.Layer<never> | undefined;\n}) => ({\n args: compileArgsSchema(args, databaseSchema.target.scope),\n returns: compileReturnsSchema(returns, databaseSchema.target.scope),\n handler: (\n ctx: GenericQueryCtx<\n DataModel.ToConvex<DataModel.FromSchema<DatabaseSchema_>>\n >,\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 // 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* RegisteredFunction.applyMiddleware(\n handler(decodedArgs),\n resolvedMiddlewares,\n {\n name,\n functionType: \"query\",\n functionVisibility,\n args: decodedArgs,\n },\n ).pipe(\n Effect.provide(\n Layer.mergeAll(\n DatabaseReader.layer(databaseSchema, ctx.db),\n ExecutionMetadata.layer(ctx.meta),\n TransactionMetadata.layer(ctx.meta),\n QueryTransactionContext.layer(ctx),\n Auth.layerForTarget<DatabaseSchema_[\"target\"]>(\n databaseSchema.target,\n ctx.auth,\n ),\n RegisteredFunction.storageLayer<\n DatabaseSchema.Scope<DatabaseSchema_>\n >(ctx.storage),\n QueryRunner.layer(ctx.runQuery),\n QueryCtx.layer<\n DataModel.ToConvex<DataModel.FromSchema<DatabaseSchema_>>,\n DatabaseSchema.Scope<DatabaseSchema_>\n >(ctx, databaseSchema.target.scope),\n ConvexConfigProvider.layer,\n ),\n ),\n );\n return yield* pipe(\n decodedReturns,\n Schema.encodeEffect(returns),\n Effect.catchTag(\"SchemaError\", Effect.die),\n );\n }).pipe(\n Effect.provideService(Clock.Clock, queryClock),\n RegisteredFunction.runHandlerPromise(\n RegisteredFunction.combineErrorSchemas(error, resolvedMiddlewares),\n {\n scheduler: new EffectScheduler.MixedScheduler(\"sync\"),\n invocation: Effect.promise(() => ctx.meta.getFunctionMetadata()),\n clock: observability === undefined ? undefined : queryClock,\n observability,\n },\n ),\n ),\n});\n\nexport const mutationLayer = <Schema extends DatabaseSchema.AnyWithProps>(\n schema: Schema,\n ctx: GenericMutationCtx<DataModel.ToConvex<DataModel.FromSchema<Schema>>>,\n) =>\n Layer.mergeAll(\n DatabaseReader.layer(schema, ctx.db),\n DatabaseWriter.layer(schema, ctx.db),\n ExecutionMetadata.layer(ctx.meta),\n RequestMetadata.layer(ctx.meta),\n TransactionMetadata.layer(ctx.meta),\n Auth.layerForTarget<Schema[\"target\"]>(schema.target, ctx.auth),\n Auth.mutationLayer(ctx.auth),\n Scheduler.layer<DatabaseSchema.Scope<Schema>>(\n ctx.scheduler,\n schema.target.scope,\n ),\n RegisteredFunction.storageLayer<DatabaseSchema.Scope<Schema>>(ctx.storage),\n StorageWriter.layer<DatabaseSchema.Scope<Schema>>(\n ctx.storage,\n schema.target.scope,\n ),\n QueryRunner.layer(ctx.runQuery),\n MutationRunner.layer(ctx.runMutation),\n QueryTransactionContext.layer(ctx),\n MutationTransactionContext.layer(ctx),\n MutationCtx.layer<\n DataModel.ToConvex<DataModel.FromSchema<Schema>>,\n DatabaseSchema.Scope<Schema>\n >(ctx, schema.target.scope),\n ConvexConfigProvider.layer,\n );\n\nexport type MutationServices<Schema extends DatabaseSchema.AnyWithProps> =\n Handler.MutationServices<Schema>;\n\nconst mutationFunction = <\n DatabaseSchema_ extends DatabaseSchema.AnyWithProps,\n Args,\n ConvexArgs extends DefaultFunctionArgs,\n Returns,\n ConvexReturns,\n E,\n>({\n databaseSchema,\n name,\n functionVisibility,\n args,\n returns,\n error,\n handler,\n resolvedMiddlewares,\n observability,\n}: {\n databaseSchema: DatabaseSchema_;\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: (\n a: Args,\n ) => Effect.Effect<Returns, E, MutationServices<DatabaseSchema_>>;\n resolvedMiddlewares: ReadonlyArray<ResolvedMiddleware.ResolvedMiddleware>;\n observability?: Layer.Layer<never> | undefined;\n}) => ({\n args: compileArgsSchema(args, databaseSchema.target.scope),\n returns: compileReturnsSchema(returns, databaseSchema.target.scope),\n handler: (\n ctx: GenericMutationCtx<\n DataModel.ToConvex<DataModel.FromSchema<DatabaseSchema_>>\n >,\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 // 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* RegisteredFunction.applyMiddleware(\n handler(decodedArgs),\n resolvedMiddlewares,\n {\n name,\n functionType: \"mutation\",\n functionVisibility,\n args: decodedArgs,\n },\n ).pipe(Effect.provide(mutationLayer(databaseSchema, ctx)));\n return yield* pipe(\n decodedReturns,\n Schema.encodeEffect(returns),\n Effect.catchTag(\"SchemaError\", Effect.die),\n );\n }).pipe(\n RegisteredFunction.runHandlerPromise(\n RegisteredFunction.combineErrorSchemas(error, resolvedMiddlewares),\n {\n scheduler: new EffectScheduler.MixedScheduler(\"sync\"),\n invocation: Effect.promise(() => ctx.meta.getFunctionMetadata()),\n observability,\n },\n ),\n ),\n});\n\nconst convexActionFunction = <\n DatabaseSchema_ extends DatabaseSchema.AnyWithProps,\n Args,\n ConvexArgs extends DefaultFunctionArgs,\n Returns,\n ConvexReturns,\n E,\n>(\n schema: 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 >;\n resolvedMiddlewares: ReadonlyArray<ResolvedMiddleware.ResolvedMiddleware>;\n observability?: Layer.Layer<never> | undefined;\n },\n) =>\n RegisteredFunction.actionFunctionBase({\n scope: schema.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(schema, ctx),\n ConvexConfigProvider.layer,\n ),\n });\n"],"mappings":"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"}
1
+ {"version":3,"file":"RegisteredConvexFunction.js","names":["RegisteredFunction.applyMiddleware","DatabaseReader.layer","ExecutionMetadata.layer","TransactionMetadata.layer","QueryTransactionContext.layer","Auth.layerForTarget","RegisteredFunction.storageLayer","QueryRunner.layer","QueryCtx.layer","ConvexConfigProvider.layer","RegisteredFunction.runHandlerPromise","RegisteredFunction.combineErrorSchemas","DatabaseWriter.layer","RequestMetadata.layer","Auth.mutationLayer","Scheduler.layer","MutationRunner.layer","MutationTransactionContext.layer","MutationCtx.layer","RegisteredFunction.domainArgs","RegisteredFunction.actionFunctionBase","RegisteredFunction.actionLayer"],"sources":["../src/RegisteredConvexFunction.ts"],"sourcesContent":["import {\n compileArgsSchema,\n compileReturnsSchema,\n} from \"@confect/core/SchemaToValidator\";\nimport {\n actionGeneric,\n type DefaultFunctionArgs,\n type FunctionVisibility,\n type GenericMutationCtx,\n type GenericQueryCtx,\n internalActionGeneric,\n internalMutationGeneric,\n internalQueryGeneric,\n mutationGeneric,\n queryGeneric,\n} from \"convex/server\";\nimport type { Value } from \"convex/values\";\nimport { pipe } from \"effect/Function\";\nimport * as Clock from \"effect/Clock\";\nimport * as Data from \"effect/Data\";\nimport * as Duration from \"effect/Duration\";\nimport * as Effect from \"effect/Effect\";\nimport * as Layer from \"effect/Layer\";\nimport * as Match from \"effect/Match\";\nimport * as Schema from \"effect/Schema\";\nimport * as EffectScheduler from \"effect/Scheduler\";\nimport * as Auth from \"./Auth.js\";\nimport * as ConvexConfigProvider from \"./ConvexConfigProvider.js\";\nimport * as DatabaseReader from \"./DatabaseReader.js\";\nimport type * as DatabaseSchema from \"./DatabaseSchema.js\";\nimport * as DatabaseWriter from \"./DatabaseWriter.js\";\nimport type * as DataModel from \"./DataModel.js\";\nimport * as ExecutionMetadata from \"./ExecutionMetadata.js\";\nimport * as RequestMetadata from \"./RequestMetadata.js\";\nimport * as TransactionMetadata from \"./TransactionMetadata.js\";\nimport * as MutationCtx from \"./MutationCtx.js\";\nimport * as MutationRunner from \"./MutationRunner.js\";\nimport * as MutationTransactionContext from \"./MutationTransactionContext.js\";\nimport * as QueryCtx from \"./QueryCtx.js\";\nimport * as QueryRunner from \"./QueryRunner.js\";\nimport * as QueryTransactionContext from \"./QueryTransactionContext.js\";\nimport * as RegisteredFunction from \"./RegisteredFunction.js\";\nimport type * as FunctionRegistryItem from \"./FunctionRegistryItem.js\";\nimport type * as ResolvedMiddleware from \"./ResolvedMiddleware.js\";\nimport * as Scheduler from \"./Scheduler.js\";\nimport { StorageWriter } from \"./StorageWriter.js\";\nimport type * as Handler from \"./Handler.js\";\n\nexport type Definition = Data.TaggedEnum<{\n PublicQuery: ReturnType<typeof queryFunction>;\n InternalQuery: ReturnType<typeof queryFunction>;\n PublicMutation: ReturnType<typeof mutationFunction>;\n InternalMutation: ReturnType<typeof mutationFunction>;\n PublicAction: ReturnType<typeof convexActionFunction>;\n InternalAction: ReturnType<typeof convexActionFunction>;\n Registered: { readonly handler: RegisteredFunction.Any };\n}>;\nexport const Definition = Data.taggedEnum<Definition>();\n\nexport const prepare = (\n databaseSchema: DatabaseSchema.AnyWithProps,\n item: FunctionRegistryItem.ConfectFunctionRegistryItem,\n resolvedMiddlewares: ReadonlyArray<ResolvedMiddleware.ResolvedMiddleware> = [],\n observability?: Layer.Layer<never>,\n) =>\n Match.value(item.functionType).pipe(\n Match.when(\"query\", () => {\n const definition = queryFunction({\n 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 return Match.value(item.functionVisibility).pipe(\n Match.when(\"public\", () => Definition.PublicQuery(definition)),\n Match.when(\"internal\", () => Definition.InternalQuery(definition)),\n Match.exhaustive,\n );\n }),\n Match.when(\"mutation\", () => {\n const definition = mutationFunction({\n 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 return Match.value(item.functionVisibility).pipe(\n Match.when(\"public\", () => Definition.PublicMutation(definition)),\n Match.when(\"internal\", () => Definition.InternalMutation(definition)),\n Match.exhaustive,\n );\n }),\n Match.when(\"action\", () => {\n const definition = convexActionFunction(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 return Match.value(item.functionVisibility).pipe(\n Match.when(\"public\", () => Definition.PublicAction(definition)),\n Match.when(\"internal\", () => Definition.InternalAction(definition)),\n Match.exhaustive,\n );\n }),\n Match.exhaustive,\n );\n\nexport const make = (\n databaseSchema: DatabaseSchema.AnyWithProps,\n item: FunctionRegistryItem.ConfectFunctionRegistryItem,\n resolvedMiddlewares: ReadonlyArray<ResolvedMiddleware.ResolvedMiddleware> = [],\n): RegisteredFunction.Any =>\n register(prepare(databaseSchema, item, resolvedMiddlewares));\n\nexport const register = (self: Definition): RegisteredFunction.Any =>\n Definition.$match(self, {\n PublicQuery: (definition) => queryGeneric(definition),\n InternalQuery: (definition) => internalQueryGeneric(definition),\n PublicMutation: (definition) => mutationGeneric(definition),\n InternalMutation: (definition) => internalMutationGeneric(definition),\n PublicAction: (definition) => actionGeneric(definition),\n InternalAction: (definition) => internalActionGeneric(definition),\n Registered: ({ handler }) => handler,\n });\n\n/**\n * Convex evicts a query from its cache once the execution observes the current\n * time (every `Date.now()` read is tracked). Effect's logging, span, and\n * elapsed-time machinery reads timestamps through the ambient `Clock`'s unsafe\n * accessors, which would silently opt any logging or timing query out of the\n * cache—and there is no untracked time source in the isolate to serve them\n * from, since Effect's own live clock falls back to `Date.now()` for monotonic\n * time when neither `process.hrtime` nor `performance.now` exists. Queries\n * therefore run with a `Clock` whose unsafe accessors all return constants, so\n * logging and spans never touch the tracker and `Effect.timed` and duration\n * metrics report a zero elapsed time, while the effectful accessors\n * (`Clock.currentTimeMillis`/`currentTimeNanos`/`monotonicTimeNanos`) read the\n * real time, making them an explicit opt-in to cache eviction. Raw `Date.now()`\n * calls in handler code likewise opt out honestly.\n */\nconst queryClock: Clock.Clock = {\n currentTimeMillisUnsafe: () => 0,\n currentTimeNanosUnsafe: () => 0n,\n monotonicTimeNanosUnsafe: () => 0n,\n // oxlint-disable-next-line effecttsgo/global-date-in-effect -- This access intentionally notifies Convex's query-cache tracker.\n currentTimeMillis: Effect.sync(() => Date.now()),\n // oxlint-disable-next-line effecttsgo/global-date-in-effect -- This access intentionally notifies Convex's query-cache tracker.\n currentTimeNanos: Effect.sync(() => BigInt(Date.now()) * 1_000_000n),\n // oxlint-disable-next-line effecttsgo/global-date-in-effect -- This access intentionally notifies Convex's query-cache tracker.\n monotonicTimeNanos: Effect.sync(() => BigInt(Date.now()) * 1_000_000n),\n // `Effect.sleep` resolves the ambient clock, so it cannot be used here—it\n // would recurse straight back into this `sleep`.\n sleep: (duration) =>\n Effect.callback<void>((resume) => {\n // oxlint-disable-next-line effecttsgo/global-timers-in-effect -- Effect.sleep would resolve this Clock and recurse.\n const handle = setTimeout(\n () => resume(Effect.void),\n Duration.toMillis(duration),\n );\n return Effect.sync(() => clearTimeout(handle));\n }),\n};\n\nconst queryFunction = <\n DatabaseSchema_ extends DatabaseSchema.AnyWithProps,\n Args,\n ConvexArgs extends DefaultFunctionArgs,\n Returns,\n ConvexReturns,\n E,\n>({\n databaseSchema,\n name,\n functionVisibility,\n args,\n returns,\n error,\n handler,\n resolvedMiddlewares,\n observability,\n}: {\n databaseSchema: DatabaseSchema_;\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: (\n a: Args,\n ) => Effect.Effect<Returns, E, Handler.QueryServices<DatabaseSchema_>>;\n resolvedMiddlewares: ReadonlyArray<ResolvedMiddleware.ResolvedMiddleware>;\n observability?: Layer.Layer<never> | undefined;\n}) => ({\n args: compileArgsSchema(args, databaseSchema.target.scope),\n returns: compileReturnsSchema(returns, databaseSchema.target.scope),\n handler: (\n ctx: GenericQueryCtx<\n DataModel.ToConvex<DataModel.FromSchema<DatabaseSchema_>>\n >,\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 // 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* RegisteredFunction.applyMiddleware(\n handler(decodedArgs),\n resolvedMiddlewares,\n {\n name,\n functionType: \"query\",\n functionVisibility,\n args: decodedArgs,\n },\n ).pipe(\n Effect.provide(\n Layer.mergeAll(\n DatabaseReader.layer(databaseSchema, ctx.db),\n ExecutionMetadata.layer(ctx.meta),\n TransactionMetadata.layer(ctx.meta),\n QueryTransactionContext.layer(ctx),\n Auth.layerForTarget<DatabaseSchema_[\"target\"]>(\n databaseSchema.target,\n ctx.auth,\n ),\n RegisteredFunction.storageLayer<\n DatabaseSchema.Scope<DatabaseSchema_>\n >(ctx.storage),\n QueryRunner.layer(ctx.runQuery),\n QueryCtx.layer<\n DataModel.ToConvex<DataModel.FromSchema<DatabaseSchema_>>,\n DatabaseSchema.Scope<DatabaseSchema_>\n >(ctx, databaseSchema.target.scope),\n ConvexConfigProvider.layer,\n ),\n ),\n );\n return yield* pipe(\n decodedReturns,\n Schema.encodeEffect(returns),\n Effect.catchTag(\"SchemaError\", Effect.die),\n );\n }).pipe(\n Effect.provideService(Clock.Clock, queryClock),\n RegisteredFunction.runHandlerPromise(\n RegisteredFunction.combineErrorSchemas(error, resolvedMiddlewares),\n {\n scheduler: new EffectScheduler.MixedScheduler(\"sync\"),\n invocation: Effect.promise(() => ctx.meta.getFunctionMetadata()),\n clock: observability === undefined ? undefined : queryClock,\n observability,\n },\n ),\n ),\n});\n\nexport const mutationLayer = <Schema extends DatabaseSchema.AnyWithProps>(\n schema: Schema,\n ctx: GenericMutationCtx<DataModel.ToConvex<DataModel.FromSchema<Schema>>>,\n) =>\n Layer.mergeAll(\n DatabaseReader.layer(schema, ctx.db),\n DatabaseWriter.layer(schema, ctx.db),\n ExecutionMetadata.layer(ctx.meta),\n RequestMetadata.layer(ctx.meta),\n TransactionMetadata.layer(ctx.meta),\n Auth.layerForTarget<Schema[\"target\"]>(schema.target, ctx.auth),\n Auth.mutationLayer(ctx.auth),\n Scheduler.layer<DatabaseSchema.Scope<Schema>>(\n ctx.scheduler,\n schema.target.scope,\n ),\n RegisteredFunction.storageLayer<DatabaseSchema.Scope<Schema>>(ctx.storage),\n StorageWriter.layer<DatabaseSchema.Scope<Schema>>(\n ctx.storage,\n schema.target.scope,\n ),\n QueryRunner.layer(ctx.runQuery),\n MutationRunner.layer(ctx.runMutation),\n QueryTransactionContext.layer(ctx),\n MutationTransactionContext.layer(ctx),\n MutationCtx.layer<\n DataModel.ToConvex<DataModel.FromSchema<Schema>>,\n DatabaseSchema.Scope<Schema>\n >(ctx, schema.target.scope),\n ConvexConfigProvider.layer,\n );\n\nexport type MutationServices<Schema extends DatabaseSchema.AnyWithProps> =\n Handler.MutationServices<Schema>;\n\nconst mutationFunction = <\n DatabaseSchema_ extends DatabaseSchema.AnyWithProps,\n Args,\n ConvexArgs extends DefaultFunctionArgs,\n Returns,\n ConvexReturns,\n E,\n>({\n databaseSchema,\n name,\n functionVisibility,\n args,\n returns,\n error,\n handler,\n resolvedMiddlewares,\n observability,\n reservedArgument,\n}: {\n databaseSchema: DatabaseSchema_;\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: (\n a: Args,\n ) => Effect.Effect<Returns, E, MutationServices<DatabaseSchema_>>;\n resolvedMiddlewares: ReadonlyArray<ResolvedMiddleware.ResolvedMiddleware>;\n observability?: Layer.Layer<never> | undefined;\n}) => ({\n args: compileArgsSchema(\n args,\n databaseSchema.target.scope,\n reservedArgument,\n name,\n ),\n returns: compileReturnsSchema(returns, databaseSchema.target.scope),\n handler: (\n ctx: GenericMutationCtx<\n DataModel.ToConvex<DataModel.FromSchema<DatabaseSchema_>>\n >,\n actualArgs: ConvexArgs,\n ): Promise<ConvexReturns> =>\n Effect.gen(function* () {\n const decodedArgs = yield* pipe(\n RegisteredFunction.domainArgs(actualArgs, reservedArgument),\n Schema.decodeUnknownEffect(args),\n Effect.catchTag(\"SchemaError\", Effect.die),\n );\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* RegisteredFunction.applyMiddleware(\n handler(decodedArgs),\n resolvedMiddlewares,\n {\n name,\n functionType: \"mutation\",\n functionVisibility,\n args: decodedArgs,\n },\n ).pipe(Effect.provide(mutationLayer(databaseSchema, ctx)));\n return yield* pipe(\n decodedReturns,\n Schema.encodeEffect(returns),\n Effect.catchTag(\"SchemaError\", Effect.die),\n );\n }).pipe(\n RegisteredFunction.runHandlerPromise(\n RegisteredFunction.combineErrorSchemas(error, resolvedMiddlewares),\n {\n scheduler: new EffectScheduler.MixedScheduler(\"sync\"),\n invocation: Effect.promise(() => ctx.meta.getFunctionMetadata()),\n observability,\n },\n ),\n ),\n});\n\nconst convexActionFunction = <\n DatabaseSchema_ extends DatabaseSchema.AnyWithProps,\n Args,\n ConvexArgs extends DefaultFunctionArgs,\n Returns,\n ConvexReturns,\n E,\n>(\n schema: 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 >;\n resolvedMiddlewares: ReadonlyArray<ResolvedMiddleware.ResolvedMiddleware>;\n observability?: Layer.Layer<never> | undefined;\n },\n) =>\n RegisteredFunction.actionFunctionBase({\n scope: schema.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(schema, ctx),\n ConvexConfigProvider.layer,\n ),\n });\n"],"mappings":"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"}
@@ -78,8 +78,10 @@ export declare const runHandlerPromise: (errorSchema: Schema.Codec<any, any> | u
78
78
  readonly invocation?: Effect.Effect<FunctionMetadata> | undefined;
79
79
  readonly observability?: Layer.Layer<never> | undefined;
80
80
  }) => <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, }: {
81
+ export declare const domainArgs: (args: DefaultFunctionArgs, reservedArgument?: string) => DefaultFunctionArgs;
82
+ 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
83
  name: string;
84
+ reservedArgument?: string | undefined;
83
85
  functionVisibility: FunctionVisibility;
84
86
  args: Schema.Codec<Args, ConvexArgs>;
85
87
  returns: Schema.Codec<Returns, ConvexReturns>;
@@ -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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"}
@@ -38,6 +38,7 @@ var RegisteredFunction_exports = /* @__PURE__ */ __exportAll({
38
38
  applyMiddleware: () => applyMiddleware,
39
39
  baseActionLayer: () => baseActionLayer,
40
40
  combineErrorSchemas: () => combineErrorSchemas,
41
+ domainArgs: () => domainArgs,
41
42
  runHandlerPromise: () => runHandlerPromise,
42
43
  storageLayer: () => storageLayer
43
44
  });
@@ -97,11 +98,19 @@ const combineErrorSchemas = (error, resolvedMiddlewares) => {
97
98
  const runHandlerPromise = (errorSchema, runOptions) => (effect) => {
98
99
  const { observability, invocation, clock } = runOptions ?? {};
99
100
  let encodedError;
101
+ let undeclared;
100
102
  const observed = Effect.tapCause(effect, (cause) => Effect.gen(function* () {
101
103
  const reason = cause.reasons.find(Cause.isDieReason) ?? cause.reasons.find(Cause.isFailReason);
102
104
  if (reason?._tag === "Fail" && errorSchema !== void 0) {
103
105
  encodedError = yield* Effect.exit(Schema.encodeEffect(errorSchema)(reason.error));
104
- if (Exit.isFailure(encodedError)) return yield* Effect.orDie(encodedError);
106
+ if (Exit.isFailure(encodedError)) {
107
+ const encoding = encodedError.cause;
108
+ return yield* Cause.squash(encoding) instanceof ConvexError ? Effect.die(new Error(Cause.pretty(encoding), { cause: encoding })) : Effect.orDie(encodedError);
109
+ }
110
+ }
111
+ if (reason?._tag === "Fail" && errorSchema === void 0 && !(reason.error instanceof ConvexError)) {
112
+ undeclared = { error: reason.error };
113
+ return yield* Effect.die(reason.error);
105
114
  }
106
115
  }));
107
116
  const withConvexError = Effect.gen(function* () {
@@ -113,6 +122,7 @@ const runHandlerPromise = (errorSchema, runOptions) => (effect) => {
113
122
  }
114
123
  }, (span) => Effect.provideService(observed, Tracer.ParentSpan, span))));
115
124
  if (Exit.isSuccess(exit)) return Result.succeed(exit.value);
125
+ if (undeclared !== void 0) return yield* Effect.die(undeclared.error);
116
126
  const cause = encodedError !== void 0 && Exit.isFailure(encodedError) ? encodedError.cause : exit.cause;
117
127
  const reason = cause.reasons.find(Cause.isDieReason) ?? cause.reasons.find(Cause.isFailReason);
118
128
  if (encodedError === void 0 && reason?._tag === "Die" && cause.reasons.length === 1 && reason.defect instanceof ConvexError) return Result.fail(reason.defect);
@@ -134,11 +144,12 @@ const runHandlerPromise = (errorSchema, runOptions) => (effect) => {
134
144
  onSuccess: (value) => value
135
145
  }));
136
146
  };
137
- const actionFunctionBase = ({ name, functionVisibility, args, returns, error, handler, resolvedMiddlewares = [], createLayer, scope = IdScope.app, observability }) => ({
138
- args: compileArgsSchema(args, scope),
147
+ const domainArgs = (args, reservedArgument) => reservedArgument === void 0 ? args : Object.fromEntries(Object.entries(args).filter(([key]) => key !== reservedArgument));
148
+ const actionFunctionBase = ({ name, functionVisibility, args, returns, error, handler, resolvedMiddlewares = [], createLayer, scope = IdScope.app, observability, reservedArgument }) => ({
149
+ args: compileArgsSchema(args, scope, reservedArgument, name),
139
150
  returns: compileReturnsSchema(returns, scope),
140
151
  handler: (ctx, actualArgs) => Effect.gen(function* () {
141
- const decodedArgs = yield* pipe(actualArgs, Schema.decodeUnknownEffect(args), Effect.catchTag("SchemaError", Effect.die));
152
+ const decodedArgs = yield* pipe(domainArgs(actualArgs, reservedArgument), Schema.decodeUnknownEffect(args), Effect.catchTag("SchemaError", Effect.die));
142
153
  const restricted = resolvedMiddlewares.some(({ middlewareSpec }) => middlewareSpec.key === ActionCallSpec.Middleware.key) ? restrict(ctx) : void 0;
143
154
  const decodedReturns = yield* applyMiddleware(handler(decodedArgs), resolvedMiddlewares, {
144
155
  name,
@@ -200,6 +211,6 @@ const restrict = (ctx) => {
200
211
  };
201
212
  };
202
213
  //#endregion
203
- export { Observability, RegisteredFunction_exports, actionFunctionBase, actionLayer, applyMiddleware, baseActionLayer, combineErrorSchemas, runHandlerPromise, storageLayer };
214
+ export { Observability, RegisteredFunction_exports, actionFunctionBase, actionLayer, applyMiddleware, baseActionLayer, combineErrorSchemas, domainArgs, runHandlerPromise, storageLayer };
204
215
 
205
216
  //# 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 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 if (Exit.isFailure(encodedError))\n return yield* Effect.orDie(encodedError);\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\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":["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 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: 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 +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"}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@gaganref/confect-server",
3
- "version": "10.3.1-fork.40",
3
+ "version": "10.3.1-fork.42",
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.40",
9
+ "@confect/core": "npm:@gaganref/confect-core@10.3.1-fork.42",
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"
@@ -29,6 +29,7 @@ export interface ConfectFunctionRegistryItem {
29
29
  readonly [TypeId]: TypeId;
30
30
  readonly _tag: "Confect";
31
31
  readonly name: string;
32
+ readonly reservedArgument?: string;
32
33
  readonly functionVisibility: FunctionVisibility;
33
34
  readonly functionType: FunctionType;
34
35
  readonly args: Schema.Codec<any, any>;
@@ -64,6 +65,9 @@ export const make = ({
64
65
  const item = Object.assign(Object.create(FunctionRegistryItemProto), {
65
66
  _tag: "Confect" as const,
66
67
  name: functionSpec.name,
68
+ ...(functionSpec.reservedArgument === undefined
69
+ ? {}
70
+ : { reservedArgument: functionSpec.reservedArgument }),
67
71
  functionVisibility: functionSpec.functionVisibility,
68
72
  functionType: functionSpec.runtimeAndFunctionType.functionType,
69
73
  middlewareAttachments: [
@@ -86,6 +86,7 @@ export const prepare = (
86
86
  const definition = mutationFunction({
87
87
  databaseSchema,
88
88
  name: item.name,
89
+ reservedArgument: item.reservedArgument,
89
90
  observability,
90
91
  functionVisibility: item.functionVisibility,
91
92
  args: item.args,
@@ -103,6 +104,7 @@ export const prepare = (
103
104
  Match.when("action", () => {
104
105
  const definition = convexActionFunction(databaseSchema, {
105
106
  name: item.name,
107
+ reservedArgument: item.reservedArgument,
106
108
  observability,
107
109
  functionVisibility: item.functionVisibility,
108
110
  args: item.args,
@@ -324,9 +326,11 @@ const mutationFunction = <
324
326
  handler,
325
327
  resolvedMiddlewares,
326
328
  observability,
329
+ reservedArgument,
327
330
  }: {
328
331
  databaseSchema: DatabaseSchema_;
329
332
  name: string;
333
+ reservedArgument?: string | undefined;
330
334
  functionVisibility: FunctionVisibility;
331
335
  args: Schema.Codec<Args, ConvexArgs>;
332
336
  returns: Schema.Codec<Returns, ConvexReturns>;
@@ -337,7 +341,12 @@ const mutationFunction = <
337
341
  resolvedMiddlewares: ReadonlyArray<ResolvedMiddleware.ResolvedMiddleware>;
338
342
  observability?: Layer.Layer<never> | undefined;
339
343
  }) => ({
340
- args: compileArgsSchema(args, databaseSchema.target.scope),
344
+ args: compileArgsSchema(
345
+ args,
346
+ databaseSchema.target.scope,
347
+ reservedArgument,
348
+ name,
349
+ ),
341
350
  returns: compileReturnsSchema(returns, databaseSchema.target.scope),
342
351
  handler: (
343
352
  ctx: GenericMutationCtx<
@@ -347,7 +356,7 @@ const mutationFunction = <
347
356
  ): Promise<ConvexReturns> =>
348
357
  Effect.gen(function* () {
349
358
  const decodedArgs = yield* pipe(
350
- actualArgs,
359
+ RegisteredFunction.domainArgs(actualArgs, reservedArgument),
351
360
  Schema.decodeUnknownEffect(args),
352
361
  Effect.catchTag("SchemaError", Effect.die),
353
362
  );
@@ -397,8 +406,10 @@ const convexActionFunction = <
397
406
  handler,
398
407
  resolvedMiddlewares,
399
408
  observability,
409
+ reservedArgument,
400
410
  }: {
401
411
  name: string;
412
+ reservedArgument?: string | undefined;
402
413
  functionVisibility: FunctionVisibility;
403
414
  args: Schema.Codec<Args, ConvexArgs>;
404
415
  returns: Schema.Codec<Returns, ConvexReturns>;
@@ -424,6 +435,7 @@ const convexActionFunction = <
424
435
  handler,
425
436
  resolvedMiddlewares,
426
437
  observability,
438
+ reservedArgument,
427
439
  createLayer: (ctx) =>
428
440
  Layer.mergeAll(
429
441
  RegisteredFunction.actionLayer(schema, ctx),
@@ -233,6 +233,7 @@ export const runHandlerPromise =
233
233
  <A, E>(effect: Effect.Effect<A, E>): Promise<A> => {
234
234
  const { observability, invocation, clock } = runOptions ?? {};
235
235
  let encodedError: Exit.Exit<any, any> | undefined;
236
+ let undeclared: { readonly error: unknown } | undefined;
236
237
  const observed = Effect.tapCause(effect, (cause) =>
237
238
  Effect.gen(function* () {
238
239
  const reason =
@@ -242,8 +243,24 @@ export const runHandlerPromise =
242
243
  encodedError = yield* Effect.exit(
243
244
  Schema.encodeEffect(errorSchema)(reason.error),
244
245
  );
245
- if (Exit.isFailure(encodedError))
246
- return yield* Effect.orDie(encodedError);
246
+ // An encoding failure is a defect, even when it dies with a ConvexError.
247
+ if (Exit.isFailure(encodedError)) {
248
+ const encoding = encodedError.cause;
249
+ return yield* Cause.squash(encoding) instanceof ConvexError
250
+ ? Effect.die(
251
+ new Error(Cause.pretty(encoding), { cause: encoding }),
252
+ )
253
+ : Effect.orDie(encodedError);
254
+ }
255
+ }
256
+ // With no error schema a failure is a defect, so the root span ends as one.
257
+ if (
258
+ reason?._tag === "Fail" &&
259
+ errorSchema === undefined &&
260
+ !(reason.error instanceof ConvexError)
261
+ ) {
262
+ undeclared = { error: reason.error };
263
+ return yield* Effect.die(reason.error);
247
264
  }
248
265
  }),
249
266
  );
@@ -267,6 +284,8 @@ export const runHandlerPromise =
267
284
  if (Exit.isSuccess(exit)) {
268
285
  return Result.succeed(exit.value);
269
286
  }
287
+ if (undeclared !== undefined)
288
+ return yield* Effect.die(undeclared.error);
270
289
 
271
290
  const cause =
272
291
  encodedError !== undefined && Exit.isFailure(encodedError)
@@ -328,6 +347,16 @@ export const runHandlerPromise =
328
347
  );
329
348
  };
330
349
 
350
+ export const domainArgs = (
351
+ args: DefaultFunctionArgs,
352
+ reservedArgument?: string,
353
+ ): DefaultFunctionArgs =>
354
+ reservedArgument === undefined
355
+ ? args
356
+ : Object.fromEntries(
357
+ Object.entries(args).filter(([key]) => key !== reservedArgument),
358
+ );
359
+
331
360
  export const actionFunctionBase = <
332
361
  Schema extends DatabaseSchema.AnyWithProps,
333
362
  Args,
@@ -347,8 +376,10 @@ export const actionFunctionBase = <
347
376
  createLayer,
348
377
  scope = IdScope.app,
349
378
  observability,
379
+ reservedArgument,
350
380
  }: {
351
381
  name: string;
382
+ reservedArgument?: string | undefined;
352
383
  functionVisibility: FunctionVisibility;
353
384
  args: Schema.Codec<Args, ConvexArgs>;
354
385
  returns: Schema.Codec<Returns, ConvexReturns>;
@@ -361,7 +392,7 @@ export const actionFunctionBase = <
361
392
  scope?: IdScope.IdScope;
362
393
  observability?: Layer.Layer<never> | undefined;
363
394
  }) => ({
364
- args: compileArgsSchema(args, scope),
395
+ args: compileArgsSchema(args, scope, reservedArgument, name),
365
396
  returns: compileReturnsSchema(returns, scope),
366
397
  handler: (
367
398
  ctx: GenericActionCtx<DataModel.ToConvex<DataModel.FromSchema<Schema>>>,
@@ -369,7 +400,7 @@ export const actionFunctionBase = <
369
400
  ): Promise<ConvexReturns> =>
370
401
  Effect.gen(function* () {
371
402
  const decodedArgs = yield* pipe(
372
- actualArgs,
403
+ domainArgs(actualArgs, reservedArgument),
373
404
  Schema.decodeUnknownEffect(args),
374
405
  Effect.catchTag("SchemaError", Effect.die),
375
406
  );
@@ -61,6 +61,7 @@ export const make = (
61
61
  return genericFunction(
62
62
  nodeActionFunction(databaseSchema, {
63
63
  name: item.name,
64
+ reservedArgument: item.reservedArgument,
64
65
  observability,
65
66
  functionVisibility: item.functionVisibility,
66
67
  args: item.args,
@@ -90,8 +91,10 @@ const nodeActionFunction = <
90
91
  handler,
91
92
  resolvedMiddlewares,
92
93
  observability,
94
+ reservedArgument,
93
95
  }: {
94
96
  name: string;
97
+ reservedArgument?: string | undefined;
95
98
  functionVisibility: FunctionVisibility;
96
99
  args: Schema.Codec<Args, ConvexArgs>;
97
100
  returns: Schema.Codec<Returns, ConvexReturns>;
@@ -118,6 +121,7 @@ const nodeActionFunction = <
118
121
  handler,
119
122
  resolvedMiddlewares,
120
123
  observability,
124
+ reservedArgument,
121
125
  createLayer: (ctx) =>
122
126
  Layer.mergeAll(
123
127
  RegisteredFunction.actionLayer(databaseSchema, ctx),