@gaganref/confect-server 10.3.1-fork.9 → 10.3.1-fork.90
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.
- package/dist/ActionCall.d.ts +30 -0
- package/dist/ActionCall.d.ts.map +1 -0
- package/dist/ActionCall.js +41 -0
- package/dist/ActionCall.js.map +1 -0
- package/dist/ActionRunner.d.ts +1 -1
- package/dist/ActionRunner.d.ts.map +1 -1
- package/dist/ActionRunner.js +3 -3
- package/dist/ActionRunner.js.map +1 -1
- package/dist/AiGatewayDecisionClient.js +1 -1
- package/dist/AiGatewayLanguageClient.js +1 -1
- package/dist/Auth.d.ts +31 -2
- package/dist/Auth.d.ts.map +1 -1
- package/dist/Auth.js +23 -3
- package/dist/Auth.js.map +1 -1
- package/dist/Callback.d.ts +1 -1
- package/dist/Callback.d.ts.map +1 -1
- package/dist/Callback.js +6 -6
- package/dist/Callback.js.map +1 -1
- package/dist/ComponentCtx.d.ts +4 -0
- package/dist/ComponentCtx.d.ts.map +1 -1
- package/dist/ConvexConfigProvider.js +2 -2
- package/dist/ConvexFunctionDefinitions.d.ts.map +1 -1
- package/dist/ConvexFunctionDefinitions.js +4 -4
- package/dist/ConvexFunctionDefinitions.js.map +1 -1
- package/dist/ConvexLogger.js +1 -1
- package/dist/CronJobs.d.ts.map +1 -1
- package/dist/CronJobs.js +7 -6
- package/dist/CronJobs.js.map +1 -1
- package/dist/DatabaseSchema.js +2 -2
- package/dist/DatabaseWriter.d.ts +44 -2
- package/dist/DatabaseWriter.d.ts.map +1 -1
- package/dist/DatabaseWriter.js +59 -9
- package/dist/DatabaseWriter.js.map +1 -1
- package/dist/ExecutionMetadata.js +1 -1
- package/dist/FunctionImpl.js +2 -2
- package/dist/FunctionRegistryItem.d.ts +1 -0
- package/dist/FunctionRegistryItem.d.ts.map +1 -1
- package/dist/FunctionRegistryItem.js +2 -1
- package/dist/FunctionRegistryItem.js.map +1 -1
- package/dist/GroupImpl.d.ts +21 -2
- package/dist/GroupImpl.d.ts.map +1 -1
- package/dist/GroupImpl.js +21 -22
- package/dist/GroupImpl.js.map +1 -1
- package/dist/GroupRegistry.d.ts +1 -0
- package/dist/GroupRegistry.d.ts.map +1 -1
- package/dist/GroupRegistry.js +10 -3
- package/dist/GroupRegistry.js.map +1 -1
- package/dist/Handler.d.ts +8 -4
- package/dist/Handler.d.ts.map +1 -1
- package/dist/Handler.js.map +1 -1
- package/dist/HttpRouter.d.ts +3 -0
- package/dist/HttpRouter.d.ts.map +1 -1
- package/dist/HttpRouter.js +29 -10
- package/dist/HttpRouter.js.map +1 -1
- package/dist/MiddlewareImpl.js +1 -1
- package/dist/MountInit.d.ts +31 -0
- package/dist/MountInit.d.ts.map +1 -0
- package/dist/MountInit.js +49 -0
- package/dist/MountInit.js.map +1 -0
- package/dist/MutationRunner.d.ts +1 -1
- package/dist/MutationRunner.d.ts.map +1 -1
- package/dist/MutationRunner.js +3 -3
- package/dist/MutationRunner.js.map +1 -1
- package/dist/MutationTransactionContext.d.ts.map +1 -1
- package/dist/MutationTransactionContext.js +4 -3
- package/dist/MutationTransactionContext.js.map +1 -1
- package/dist/OfficialComponent.d.ts +60 -0
- package/dist/OfficialComponent.d.ts.map +1 -0
- package/dist/OfficialComponent.js +72 -0
- package/dist/OfficialComponent.js.map +1 -0
- package/dist/OrderedQuery.d.ts +4 -5
- package/dist/OrderedQuery.d.ts.map +1 -1
- package/dist/OrderedQuery.js.map +1 -1
- package/dist/QueryInitializer.js +2 -2
- package/dist/QueryRunner.js +2 -2
- package/dist/QueryStream.d.ts +120 -12
- package/dist/QueryStream.d.ts.map +1 -1
- package/dist/QueryStream.js +143 -41
- package/dist/QueryStream.js.map +1 -1
- package/dist/QueryStreamCursor.js +1 -1
- package/dist/QueryStreamIndexPrefix.js +1 -1
- package/dist/QueryStreamIndexRange.js +2 -2
- package/dist/QueryStreamKey.js +1 -1
- package/dist/QueryStreamKeyBounds.js +2 -2
- package/dist/QueryStreamKeyLayout.js +2 -2
- package/dist/QueryStreamKeyValues.js +2 -2
- package/dist/QueryStreamPagination.js +1 -1
- package/dist/QueryStreamReadBudget.d.ts +3 -2
- package/dist/QueryStreamReadBudget.d.ts.map +1 -1
- package/dist/QueryStreamReadBudget.js +8 -5
- package/dist/QueryStreamReadBudget.js.map +1 -1
- package/dist/QueryTransactionContext.js +2 -2
- package/dist/RegisteredConvexFunction.d.ts +10 -5
- package/dist/RegisteredConvexFunction.d.ts.map +1 -1
- package/dist/RegisteredConvexFunction.js +49 -29
- package/dist/RegisteredConvexFunction.js.map +1 -1
- package/dist/RegisteredFunction.d.ts +48 -22
- package/dist/RegisteredFunction.d.ts.map +1 -1
- package/dist/RegisteredFunction.js +163 -42
- package/dist/RegisteredFunction.js.map +1 -1
- package/dist/RegisteredNodeFunction.d.ts +1 -1
- package/dist/RegisteredNodeFunction.d.ts.map +1 -1
- package/dist/RegisteredNodeFunction.js +10 -6
- package/dist/RegisteredNodeFunction.js.map +1 -1
- package/dist/RegistryItems.d.ts +7 -0
- package/dist/RegistryItems.d.ts.map +1 -1
- package/dist/RegistryItems.js +8 -3
- package/dist/RegistryItems.js.map +1 -1
- package/dist/RequestMetadata.js +1 -1
- package/dist/Scheduler.d.ts +1 -1
- package/dist/Scheduler.d.ts.map +1 -1
- package/dist/Scheduler.js +14 -13
- package/dist/Scheduler.js.map +1 -1
- package/dist/Storage.js +1 -1
- package/dist/StorageActionWriter.js +1 -1
- package/dist/StorageReader.js +1 -1
- package/dist/StorageWriter.js +1 -1
- package/dist/Table.d.ts +6 -6
- package/dist/Table.d.ts.map +1 -1
- package/dist/TableInfo.d.ts +7 -7
- package/dist/TableInfo.d.ts.map +1 -1
- package/dist/TableInfo.js.map +1 -1
- package/dist/TransactionMetadata.js +1 -1
- package/dist/VectorSearch.js +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -18
- package/dist/internal/AiGatewayDecisionClient.js +1 -1
- package/dist/internal/AiGatewayLanguageClient.js +1 -1
- package/dist/internal/AiGatewayServiceToken.js +1 -1
- package/dist/internal/DocumentPatch.d.ts +16 -0
- package/dist/internal/DocumentPatch.d.ts.map +1 -0
- package/dist/internal/DocumentPatch.js +36 -0
- package/dist/internal/DocumentPatch.js.map +1 -0
- package/dist/internal/httpBody.d.ts +13 -0
- package/dist/internal/httpBody.d.ts.map +1 -0
- package/dist/internal/httpBody.js +47 -0
- package/dist/internal/httpBody.js.map +1 -0
- package/dist/internal/httpOptions.d.ts +4 -0
- package/dist/internal/httpOptions.d.ts.map +1 -0
- package/dist/internal/httpOptions.js +83 -0
- package/dist/internal/httpOptions.js.map +1 -0
- package/dist/internal/observability.d.ts +5 -0
- package/dist/internal/observability.d.ts.map +1 -0
- package/dist/internal/observability.js +21 -0
- package/dist/internal/observability.js.map +1 -0
- package/dist/internal/reservedArgument.d.ts +8 -0
- package/dist/internal/reservedArgument.d.ts.map +1 -0
- package/dist/internal/reservedArgument.js +30 -0
- package/dist/internal/reservedArgument.js.map +1 -0
- package/package.json +5 -5
- package/src/ActionCall.ts +83 -0
- package/src/ActionRunner.ts +3 -2
- package/src/Auth.ts +49 -1
- package/src/Callback.ts +3 -2
- package/src/ComponentCtx.ts +2 -0
- package/src/ConvexFunctionDefinitions.ts +2 -1
- package/src/CronJobs.ts +2 -1
- package/src/DatabaseWriter.ts +190 -26
- package/src/FunctionRegistryItem.ts +4 -0
- package/src/GroupImpl.ts +61 -8
- package/src/GroupRegistry.ts +7 -3
- package/src/Handler.ts +21 -5
- package/src/HttpRouter.ts +69 -5
- package/src/MountInit.ts +80 -0
- package/src/MutationRunner.ts +3 -2
- package/src/MutationTransactionContext.ts +2 -1
- package/src/OfficialComponent.ts +168 -0
- package/src/OrderedQuery.ts +4 -5
- package/src/QueryStream.ts +391 -61
- package/src/QueryStreamReadBudget.ts +19 -6
- package/src/RegisteredConvexFunction.ts +39 -2
- package/src/RegisteredFunction.ts +305 -49
- package/src/RegisteredNodeFunction.ts +11 -1
- package/src/RegistryItems.ts +31 -0
- package/src/Scheduler.ts +17 -19
- package/src/TableInfo.ts +18 -22
- package/src/index.ts +3 -0
- package/src/internal/DocumentPatch.ts +87 -0
- package/src/internal/httpBody.ts +72 -0
- package/src/internal/httpOptions.ts +154 -0
- package/src/internal/observability.ts +27 -0
- package/src/internal/reservedArgument.ts +56 -0
|
@@ -1,9 +1,12 @@
|
|
|
1
|
+
export { Forward } from "./internal/reservedArgument.js";
|
|
1
2
|
import type { FunctionSpec, RuntimeAndFunctionType } from "@confect/core";
|
|
2
3
|
import * as IdScope from "@confect/core/IdScope";
|
|
3
4
|
import type * as FunctionProvenance from "@confect/core/FunctionProvenance";
|
|
4
5
|
import * as MiddlewareSpec from "@confect/core/MiddlewareSpec";
|
|
5
|
-
import { type DefaultFunctionArgs, type FunctionVisibility, type GenericActionCtx, type GenericDataModel, type StorageReader as ConvexStorageReader, type RegisteredAction, type RegisteredMutation, type RegisteredQuery } from "convex/server";
|
|
6
|
+
import { type DefaultFunctionArgs, type FunctionVisibility, type FunctionMetadata, type MutationMeta, type QueryMeta, type GenericActionCtx, type GenericDataModel, type StorageReader as ConvexStorageReader, type RegisteredAction, type RegisteredMutation, type RegisteredQuery } from "convex/server";
|
|
6
7
|
import type { Value } from "convex/values";
|
|
8
|
+
import * as Clock from "effect/Clock";
|
|
9
|
+
import * as Context from "effect/Context";
|
|
7
10
|
import * as Effect from "effect/Effect";
|
|
8
11
|
import * as Layer from "effect/Layer";
|
|
9
12
|
import * as Schema from "effect/Schema";
|
|
@@ -24,6 +27,17 @@ import type * as StorageReader from "./StorageReader.js";
|
|
|
24
27
|
import * as StorageWriter from "./StorageWriter.js";
|
|
25
28
|
import * as VectorSearch from "./VectorSearch.js";
|
|
26
29
|
import type * as Handler from "./Handler.js";
|
|
30
|
+
export interface ReceivedValue {
|
|
31
|
+
readonly value: unknown;
|
|
32
|
+
readonly requestId: string;
|
|
33
|
+
readonly deployment: string | undefined;
|
|
34
|
+
readonly visibility?: FunctionVisibility;
|
|
35
|
+
}
|
|
36
|
+
export declare const Received: Context.Reference<ReceivedValue | undefined>;
|
|
37
|
+
export declare const invocationMetadata: (meta: Pick<MutationMeta, "getFunctionMetadata" | "getRequestMetadata">, args: DefaultFunctionArgs, reservedArgument?: string) => Effect.Effect<FunctionMetadata & {
|
|
38
|
+
readonly received?: ReceivedValue;
|
|
39
|
+
}>;
|
|
40
|
+
export declare const Observability: Context.Reference<Layer.Layer<never, never, never> | undefined>;
|
|
27
41
|
export type Any = RegisteredQuery<FunctionVisibility, DefaultFunctionArgs, any> | RegisteredMutation<FunctionVisibility, DefaultFunctionArgs, any> | RegisteredAction<FunctionVisibility, DefaultFunctionArgs, any>;
|
|
28
42
|
type ConfectRegisteredFunction<FunctionSpec_ extends FunctionSpec.AnyWithProps> = FunctionSpec.EncodedArgs<FunctionSpec_> extends infer Args_ extends DefaultFunctionArgs ? RuntimeAndFunctionType.GetFunctionType<FunctionSpec_["runtimeAndFunctionType"]> extends "query" ? RegisteredQuery<FunctionSpec.GetFunctionVisibility<FunctionSpec_>, Args_, Promise<FunctionSpec.EncodedReturns<FunctionSpec_>>> : RuntimeAndFunctionType.GetFunctionType<FunctionSpec_["runtimeAndFunctionType"]> extends "mutation" ? RegisteredMutation<FunctionSpec.GetFunctionVisibility<FunctionSpec_>, Args_, Promise<FunctionSpec.EncodedReturns<FunctionSpec_>>> : RuntimeAndFunctionType.GetFunctionType<FunctionSpec_["runtimeAndFunctionType"]> extends "action" ? RegisteredAction<FunctionSpec.GetFunctionVisibility<FunctionSpec_>, Args_, Promise<FunctionSpec.EncodedReturns<FunctionSpec_>>> : never : never;
|
|
29
43
|
export type ConvexRegisteredFunction<FunctionSpec_ extends FunctionSpec.AnyWithProps> = FunctionSpec_ extends FunctionSpec.AnyWithProps ? FunctionSpec.GetFunctionProvenance<FunctionSpec_> extends FunctionProvenance.Convex<infer Args_ extends DefaultFunctionArgs, infer Returns_> ? RuntimeAndFunctionType.GetFunctionType<FunctionSpec_["runtimeAndFunctionType"]> extends "query" ? RegisteredQuery<FunctionSpec.GetFunctionVisibility<FunctionSpec_>, Args_, Returns_> : RuntimeAndFunctionType.GetFunctionType<FunctionSpec_["runtimeAndFunctionType"]> extends "mutation" ? RegisteredMutation<FunctionSpec.GetFunctionVisibility<FunctionSpec_>, Args_, Returns_> : RuntimeAndFunctionType.GetFunctionType<FunctionSpec_["runtimeAndFunctionType"]> extends "action" ? RegisteredAction<FunctionSpec.GetFunctionVisibility<FunctionSpec_>, Args_, Returns_> : never : never : never;
|
|
@@ -45,38 +59,50 @@ export declare const applyMiddleware: <A, E, R>(effect: Effect.Effect<A, E, R>,
|
|
|
45
59
|
* one—mirroring the ref-side union clients decode against.
|
|
46
60
|
*/
|
|
47
61
|
export declare const combineErrorSchemas: (error: Schema.Codec<any, any> | undefined, resolvedMiddlewares: ReadonlyArray<ResolvedMiddleware.ResolvedMiddleware>) => Schema.Codec<any, any> | undefined;
|
|
62
|
+
type InvocationMeta = Pick<QueryMeta, "getFunctionMetadata"> & Partial<Pick<MutationMeta, "getRequestMetadata">>;
|
|
63
|
+
type InvocationFunctionType = "query" | "mutation" | "action";
|
|
48
64
|
/**
|
|
49
|
-
* Run the `Effect` as a `Promise`.
|
|
50
|
-
*
|
|
65
|
+
* Run the `Effect` as a `Promise`. Inspect the complete `Exit` before encoding
|
|
66
|
+
* a declared error so a typed failure cannot hide a defect.
|
|
51
67
|
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
* - Without a schema: every failure is converted to a defect via `Effect.orDie`,
|
|
58
|
-
* so nothing—not even a `ConvexError` the handler placed in its error
|
|
59
|
-
* channel—reaches the client as a `ConvexError`. The fiber dies and
|
|
60
|
-
* `runPromise` rejects with a generic failure.
|
|
68
|
+
* Any `Die` reason takes the defect path. Without a `Die`, the first `Fail` in
|
|
69
|
+
* cause order is schema-encoded and thrown as a `ConvexError` outside the
|
|
70
|
+
* Effect runtime so Convex surfaces its data to the client. Other failures and
|
|
71
|
+
* interruptions alongside that `Fail` are ignored. Without an error schema, the
|
|
72
|
+
* selected failure is treated as a defect.
|
|
61
73
|
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
*
|
|
74
|
+
* A lone `ConvexError` defect or a selected undeclared `ConvexError` failure is
|
|
75
|
+
* rethrown bare so it keeps Convex's meaning. Pagination and Workpool rely on
|
|
76
|
+
* its data for their control signals. Other causes with a `Die`, interrupt-only
|
|
77
|
+
* or empty causes, and error-encoding failures reject with a plain `Error`
|
|
78
|
+
* whose message renders the complete cause and whose `cause` holds it for
|
|
79
|
+
* server diagnostics.
|
|
67
80
|
*
|
|
68
81
|
* A `scheduler` in `runOptions` must be passed here as a run option rather than
|
|
69
82
|
* provided via `Effect.provideService` inside `effect`: the run option lands in
|
|
70
83
|
* the fiber's root context, while a service provided within `effect` pops
|
|
71
|
-
* before the
|
|
72
|
-
*
|
|
73
|
-
*
|
|
84
|
+
* before the exit/encoding wrappers this function adds. The fiber's op counter
|
|
85
|
+
* survives context pops, so a cooperative yield can fire inside those wrappers.
|
|
86
|
+
* Only a root-context scheduler covers them.
|
|
87
|
+
*
|
|
88
|
+
* Under `@confect/test`, a handler reached from a bound test invocation starts
|
|
89
|
+
* with that invocation's services through `Effect.runPromiseWith`, on a fiber
|
|
90
|
+
* of its own. Every other handler starts with `Effect.runPromise`.
|
|
74
91
|
*/
|
|
75
92
|
export declare const runHandlerPromise: (errorSchema: Schema.Codec<any, any> | undefined, runOptions?: {
|
|
76
93
|
readonly scheduler?: EffectScheduler.Scheduler | undefined;
|
|
94
|
+
readonly clock?: Clock.Clock | undefined;
|
|
95
|
+
readonly invocation?: Effect.Effect<FunctionMetadata & {
|
|
96
|
+
readonly received?: ReceivedValue;
|
|
97
|
+
}> | undefined;
|
|
98
|
+
readonly observability?: Layer.Layer<never> | undefined;
|
|
99
|
+
readonly meta?: InvocationMeta | undefined;
|
|
100
|
+
readonly functionType?: InvocationFunctionType | undefined;
|
|
77
101
|
}) => <A, E>(effect: Effect.Effect<A, E>) => Promise<A>;
|
|
78
|
-
export declare const
|
|
102
|
+
export declare const domainArgs: (args: DefaultFunctionArgs, reservedArgument?: string) => DefaultFunctionArgs;
|
|
103
|
+
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, }: {
|
|
79
104
|
name: string;
|
|
105
|
+
reservedArgument?: string | undefined;
|
|
80
106
|
functionVisibility: FunctionVisibility;
|
|
81
107
|
args: Schema.Codec<Args, ConvexArgs>;
|
|
82
108
|
returns: Schema.Codec<Returns, ConvexReturns>;
|
|
@@ -85,6 +111,7 @@ export declare const actionFunctionBase: <Schema extends DatabaseSchema.AnyWithP
|
|
|
85
111
|
resolvedMiddlewares?: ReadonlyArray<ResolvedMiddleware.ResolvedMiddleware>;
|
|
86
112
|
createLayer: (ctx: GenericActionCtx<DataModel.ToConvex<DataModel.FromSchema<Schema>>>) => Layer.Layer<R>;
|
|
87
113
|
scope?: IdScope.IdScope;
|
|
114
|
+
observability?: Layer.Layer<never> | undefined;
|
|
88
115
|
}) => {
|
|
89
116
|
args: import("convex/values").PropertyValidators;
|
|
90
117
|
returns: import("convex/values").Validator<any, any, any>;
|
|
@@ -139,5 +166,4 @@ export declare const actionLayer: <DatabaseSchema_ extends DatabaseSchema.AnyWit
|
|
|
139
166
|
};
|
|
140
167
|
} | ActionCtx.ActionCtx<DataModel.ToConvex<DataModel.FromSchema<DatabaseSchema_>>, DatabaseSchema.Scope<DatabaseSchema_>> | Scheduler.ForScope<DatabaseSchema.Scope<DatabaseSchema_>> | StorageActionWriter.ForScope<DatabaseSchema.Scope<DatabaseSchema_>> | StorageReader.ForScope<DatabaseSchema.Scope<DatabaseSchema_>> | StorageWriter.ForScope<DatabaseSchema.Scope<DatabaseSchema_>> | Auth.ForTarget<DatabaseSchema_["target"]>, never, never>;
|
|
141
168
|
export declare const storageLayer: <Scope extends IdScope.IdScope>(reader: ConvexStorageReader) => Layer.Layer<Storage.Storage | StorageReader.ForScope<Scope>>;
|
|
142
|
-
export {};
|
|
143
169
|
//# sourceMappingURL=RegisteredFunction.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RegisteredFunction.d.ts","sourceRoot":"","sources":["../src/RegisteredFunction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,KAAK,OAAO,MAAM,uBAAuB,CAAC;AACjD,OAAO,KAAK,KAAK,kBAAkB,MAAM,kCAAkC,CAAC;AAC5E,OAAO,KAAK,cAAc,MAAM,8BAA8B,CAAC;AAK/D,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,aAAa,IAAI,mBAAmB,EACzC,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACrB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"RegisteredFunction.d.ts","sourceRoot":"","sources":["../src/RegisteredFunction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAGzD,OAAO,KAAK,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,KAAK,OAAO,MAAM,uBAAuB,CAAC;AACjD,OAAO,KAAK,KAAK,kBAAkB,MAAM,kCAAkC,CAAC;AAC5E,OAAO,KAAK,cAAc,MAAM,8BAA8B,CAAC;AAK/D,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,aAAa,IAAI,mBAAmB,EACzC,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACrB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAM3C,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAGtC,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,eAAe,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAE5C,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,KAAK,KAAK,cAAc,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,KAAK,SAAS,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,iBAAiB,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,KAAK,kBAAkB,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAC5C,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,mBAAmB,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,KAAK,aAAa,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAC;AAGpD,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,KAAK,OAAO,MAAM,cAAc,CAAC;AAE7C,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,UAAU,CAAC,EAAE,kBAAkB,CAAC;CAC1C;AAED,eAAO,MAAM,QAAQ,8CAGpB,CAAC;AAEF,eAAO,MAAM,kBAAkB,SACvB,IAAI,CAAC,YAAY,EAAE,qBAAqB,GAAG,oBAAoB,CAAC,QAChE,mBAAmB,qBACN,MAAM,KACxB,MAAM,CAAC,MAAM,CAAC,gBAAgB,GAAG;IAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAA;CAAE,CAwBrE,CAAC;AAEL,eAAO,MAAM,aAAa,iEAGzB,CAAC;AAEF,MAAM,MAAM,GAAG,GACX,eAAe,CAAC,kBAAkB,EAAE,mBAAmB,EAAE,GAAG,CAAC,GAC7D,kBAAkB,CAAC,kBAAkB,EAAE,mBAAmB,EAAE,GAAG,CAAC,GAChE,gBAAgB,CAAC,kBAAkB,EAAE,mBAAmB,EAAE,GAAG,CAAC,CAAC;AAEnE,KAAK,yBAAyB,CAC5B,aAAa,SAAS,YAAY,CAAC,YAAY,IAE/C,YAAY,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,MAAM,KAAK,SACzD,mBAAmB,GACjB,sBAAsB,CAAC,eAAe,CACpC,aAAa,CAAC,wBAAwB,CAAC,CACxC,SAAS,OAAO,GACf,eAAe,CACb,YAAY,CAAC,qBAAqB,CAAC,aAAa,CAAC,EACjD,KAAK,EACL,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CACpD,GACD,sBAAsB,CAAC,eAAe,CAClC,aAAa,CAAC,wBAAwB,CAAC,CACxC,SAAS,UAAU,GACpB,kBAAkB,CAChB,YAAY,CAAC,qBAAqB,CAAC,aAAa,CAAC,EACjD,KAAK,EACL,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CACpD,GACD,sBAAsB,CAAC,eAAe,CAClC,aAAa,CAAC,wBAAwB,CAAC,CACxC,SAAS,QAAQ,GAClB,gBAAgB,CACd,YAAY,CAAC,qBAAqB,CAAC,aAAa,CAAC,EACjD,KAAK,EACL,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CACpD,GACD,KAAK,GACX,KAAK,CAAC;AAEZ,MAAM,MAAM,wBAAwB,CAClC,aAAa,SAAS,YAAY,CAAC,YAAY,IAC7C,aAAa,SAAS,YAAY,CAAC,YAAY,GAC/C,YAAY,CAAC,qBAAqB,CAAC,aAAa,CAAC,SAAS,kBAAkB,CAAC,MAAM,CACjF,MAAM,KAAK,SAAS,mBAAmB,EACvC,MAAM,QAAQ,CACf,GACC,sBAAsB,CAAC,eAAe,CACpC,aAAa,CAAC,wBAAwB,CAAC,CACxC,SAAS,OAAO,GACf,eAAe,CACb,YAAY,CAAC,qBAAqB,CAAC,aAAa,CAAC,EACjD,KAAK,EACL,QAAQ,CACT,GACD,sBAAsB,CAAC,eAAe,CAClC,aAAa,CAAC,wBAAwB,CAAC,CACxC,SAAS,UAAU,GACpB,kBAAkB,CAChB,YAAY,CAAC,qBAAqB,CAAC,aAAa,CAAC,EACjD,KAAK,EACL,QAAQ,CACT,GACD,sBAAsB,CAAC,eAAe,CAClC,aAAa,CAAC,wBAAwB,CAAC,CACxC,SAAS,QAAQ,GAClB,gBAAgB,CACd,YAAY,CAAC,qBAAqB,CAAC,aAAa,CAAC,EACjD,KAAK,EACL,QAAQ,CACT,GACD,KAAK,GACX,KAAK,GACP,KAAK,CAAC;AAEV,MAAM,MAAM,kBAAkB,CAC5B,aAAa,SAAS,YAAY,CAAC,YAAY,IAE/C,aAAa,SAAS,YAAY,CAAC,sBAAsB,CACvD,aAAa,EACb,kBAAkB,CAAC,SAAS,CAC7B,GACG,wBAAwB,CAAC,aAAa,CAAC,GACvC,aAAa,SAAS,YAAY,CAAC,sBAAsB,CACrD,aAAa,EACb,kBAAkB,CAAC,UAAU,CAC9B,GACD,yBAAyB,CAAC,aAAa,CAAC,GACxC,KAAK,CAAC;AAEd;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,UAC7B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,uBACT,aAAa,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,cAC7D,cAAc,CAAC,iBAAiB,CAAC,YAAY,CAAC,KACzD,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAazB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,UACvB,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,SAAS,uBACpB,aAAa,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,KACxE,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,SAY3B,CAAC;AAEF,KAAK,cAAc,GAAG,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,GAC1D,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAC,CAAC;AAEpD,KAAK,sBAAsB,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,CAAC;AAqB9D;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,iBAAiB,gBAEb,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,SAAS,eAClC;IACX,QAAQ,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC,SAAS,GAAG,SAAS,CAAC;IAC3D,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,UAAU,CAAC,EAChB,MAAM,CAAC,MAAM,CACX,gBAAgB,GAAG;QAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAA;KAAE,CACzD,GACD,SAAS,CAAC;IACd,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;IACxD,QAAQ,CAAC,IAAI,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,YAAY,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;CAC5D,MAEF,CAAC,EAAE,CAAC,UAAU,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,CA8H7C,CAAC;AAEJ,eAAO,MAAM,UAAU,SACf,mBAAmB,qBACN,MAAM,KACxB,mBAKI,CAAC;AAER,eAAO,MAAM,kBAAkB,GAC7B,MAAM,SAAS,cAAc,CAAC,YAAY,EAC1C,IAAI,EACJ,UAAU,SAAS,mBAAmB,EACtC,OAAO,EACP,aAAa,EACb,CAAC,EACD,CAAC,0IAaA;IACD,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACrC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAC9C,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC;IAC9C,OAAO,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACnD,mBAAmB,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;IAC3E,WAAW,EAAE,CACX,GAAG,EAAE,gBAAgB,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,KACpE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;CAChD;IACC,IAAI;IACJ,OAAO;IACP,OAAO,QACA,gBAAgB,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,cAC3D,UAAU,KACrB,OAAO,CAAC,aAAa,CAAC;CAsCzB,CAAC;AAEH,MAAM,MAAM,cAAc,CACxB,eAAe,SAAS,cAAc,CAAC,YAAY,IACjD,OAAO,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;AAE5C;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,eAAe,SAAS,gBAAgB,OACjE,gBAAgB,CAAC,eAAe,CAAC;;;;;;;;;;;;;;;;;;;;;;gBAcrC,CAAC;AAEJ,eAAO,MAAM,WAAW,GACtB,eAAe,SAAS,cAAc,CAAC,YAAY,kBAEnC,eAAe,OAC1B,gBAAgB,CACnB,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAC1D;;;;;;;;;;;;;;;;;;sbA6BA,CAAC;AAIJ,eAAO,MAAM,YAAY,GAAI,KAAK,SAAS,OAAO,CAAC,OAAO,UAChD,mBAAmB,KAC1B,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAG3D,CAAC"}
|
|
@@ -1,37 +1,71 @@
|
|
|
1
1
|
import { __exportAll } from "./_virtual/_rolldown/runtime.js";
|
|
2
|
+
import { Forward } from "./internal/reservedArgument.js";
|
|
2
3
|
import { ActionCtx, layer } from "./ActionCtx.js";
|
|
3
4
|
import { layer as layer$1 } from "./ActionRunner.js";
|
|
4
|
-
import { layer as layer$2
|
|
5
|
-
import { layer as layer$3 } from "./
|
|
6
|
-
import { layer as layer$4 } from "./
|
|
7
|
-
import {
|
|
8
|
-
import { layer as layer$
|
|
5
|
+
import { layer as layer$2 } from "./MutationRunner.js";
|
|
6
|
+
import { layer as layer$3 } from "./QueryRunner.js";
|
|
7
|
+
import { layer as layer$4 } from "./Scheduler.js";
|
|
8
|
+
import { ActionCallAlreadyUsed, ActionCallNotUsed, NestedActionNotAllowed, SchedulingNotAllowed } from "./ActionCall.js";
|
|
9
|
+
import { layer as layer$5, layerForTarget } from "./Auth.js";
|
|
10
|
+
import { layer as layer$6 } from "./ConvexConfigProvider.js";
|
|
9
11
|
import { layer as layer$7 } from "./ConvexLogger.js";
|
|
10
|
-
import { layer as layer$8 } from "./
|
|
12
|
+
import { layer as layer$8 } from "./ExecutionMetadata.js";
|
|
13
|
+
import { layer as layer$9 } from "./RequestMetadata.js";
|
|
11
14
|
import { StorageActionWriter } from "./StorageActionWriter.js";
|
|
12
15
|
import { StorageWriter } from "./StorageWriter.js";
|
|
13
|
-
import { layer as layer$
|
|
14
|
-
import {
|
|
15
|
-
import
|
|
16
|
+
import { layer as layer$10 } from "./Storage.js";
|
|
17
|
+
import { memoized } from "./internal/observability.js";
|
|
18
|
+
import { layer as layer$11 } from "./VectorSearch.js";
|
|
19
|
+
import { ConvexError } from "convex/values";
|
|
20
|
+
import * as Context from "effect/Context";
|
|
16
21
|
import * as Effect from "effect/Effect";
|
|
22
|
+
import * as Tracer from "effect/Tracer";
|
|
23
|
+
import * as ActionCallSpec from "@confect/core/ActionCall";
|
|
24
|
+
import * as Layer from "effect/Layer";
|
|
25
|
+
import * as MiddlewareSpec from "@confect/core/MiddlewareSpec";
|
|
17
26
|
import * as Schema from "effect/Schema";
|
|
18
27
|
import { pipe } from "effect/Function";
|
|
19
|
-
import * as
|
|
28
|
+
import * as Option from "effect/Option";
|
|
20
29
|
import { compileArgsSchema, compileReturnsSchema } from "@confect/core/SchemaToValidator";
|
|
21
|
-
import { ConvexError } from "convex/values";
|
|
22
30
|
import * as Result from "effect/Result";
|
|
23
31
|
import * as IdScope from "@confect/core/IdScope";
|
|
32
|
+
import * as Config from "effect/Config";
|
|
33
|
+
import * as Clock from "effect/Clock";
|
|
34
|
+
import * as Cause from "effect/Cause";
|
|
24
35
|
import * as Console from "effect/Console";
|
|
36
|
+
import * as Exit from "effect/Exit";
|
|
25
37
|
//#region src/RegisteredFunction.ts
|
|
26
38
|
var RegisteredFunction_exports = /* @__PURE__ */ __exportAll({
|
|
39
|
+
Forward: () => Forward,
|
|
40
|
+
Observability: () => Observability,
|
|
41
|
+
Received: () => Received,
|
|
27
42
|
actionFunctionBase: () => actionFunctionBase,
|
|
28
43
|
actionLayer: () => actionLayer,
|
|
29
44
|
applyMiddleware: () => applyMiddleware,
|
|
30
45
|
baseActionLayer: () => baseActionLayer,
|
|
31
46
|
combineErrorSchemas: () => combineErrorSchemas,
|
|
47
|
+
domainArgs: () => domainArgs,
|
|
48
|
+
invocationMetadata: () => invocationMetadata,
|
|
32
49
|
runHandlerPromise: () => runHandlerPromise,
|
|
33
50
|
storageLayer: () => storageLayer
|
|
34
51
|
});
|
|
52
|
+
const Received = Context.Reference("@confect/server/RegisteredFunction/Received", { defaultValue: () => void 0 });
|
|
53
|
+
const invocationMetadata = (meta, args, reservedArgument) => Effect.gen(function* () {
|
|
54
|
+
const metadata = yield* Effect.promise(() => meta.getFunctionMetadata());
|
|
55
|
+
if (reservedArgument === void 0) return metadata;
|
|
56
|
+
const { requestId } = yield* Effect.promise(() => meta.getRequestMetadata());
|
|
57
|
+
const deployment = yield* Config.String("CONVEX_CLOUD_URL").pipe(Config.option, Effect.map(Option.getOrUndefined), Effect.provide(layer$6), Effect.orDie);
|
|
58
|
+
return {
|
|
59
|
+
...metadata,
|
|
60
|
+
received: {
|
|
61
|
+
value: args[reservedArgument],
|
|
62
|
+
requestId,
|
|
63
|
+
deployment,
|
|
64
|
+
...metadata.visibility === void 0 ? {} : { visibility: metadata.visibility }
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
});
|
|
68
|
+
const Observability = Context.Reference("@confect/server/Observability", { defaultValue: () => void 0 });
|
|
35
69
|
/**
|
|
36
70
|
* Wrap a function's handler effect in its resolved middleware chain, per
|
|
37
71
|
* invocation, after args decode. Iterated innermost-first so that the
|
|
@@ -60,66 +94,153 @@ const combineErrorSchemas = (error, resolvedMiddlewares) => {
|
|
|
60
94
|
const schemas = [...error !== void 0 ? [error] : [], ...MiddlewareSpec.errorSchemas(resolvedMiddlewares.map(({ middlewareSpec }) => middlewareSpec))];
|
|
61
95
|
return schemas.length === 0 ? void 0 : schemas.length === 1 ? schemas[0] : Schema.Union(schemas);
|
|
62
96
|
};
|
|
97
|
+
const testInvocation = Symbol.for("@confect/test/Invocation");
|
|
63
98
|
/**
|
|
64
|
-
* Run the `Effect` as a `Promise`.
|
|
65
|
-
*
|
|
99
|
+
* Run the `Effect` as a `Promise`. Inspect the complete `Exit` before encoding
|
|
100
|
+
* a declared error so a typed failure cannot hide a defect.
|
|
66
101
|
*
|
|
67
|
-
*
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
* - Without a schema: every failure is converted to a defect via `Effect.orDie`,
|
|
73
|
-
* so nothing—not even a `ConvexError` the handler placed in its error
|
|
74
|
-
* channel—reaches the client as a `ConvexError`. The fiber dies and
|
|
75
|
-
* `runPromise` rejects with a generic failure.
|
|
102
|
+
* Any `Die` reason takes the defect path. Without a `Die`, the first `Fail` in
|
|
103
|
+
* cause order is schema-encoded and thrown as a `ConvexError` outside the
|
|
104
|
+
* Effect runtime so Convex surfaces its data to the client. Other failures and
|
|
105
|
+
* interruptions alongside that `Fail` are ignored. Without an error schema, the
|
|
106
|
+
* selected failure is treated as a defect.
|
|
76
107
|
*
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
108
|
+
* A lone `ConvexError` defect or a selected undeclared `ConvexError` failure is
|
|
109
|
+
* rethrown bare so it keeps Convex's meaning. Pagination and Workpool rely on
|
|
110
|
+
* its data for their control signals. Other causes with a `Die`, interrupt-only
|
|
111
|
+
* or empty causes, and error-encoding failures reject with a plain `Error`
|
|
112
|
+
* whose message renders the complete cause and whose `cause` holds it for
|
|
113
|
+
* server diagnostics.
|
|
82
114
|
*
|
|
83
115
|
* A `scheduler` in `runOptions` must be passed here as a run option rather than
|
|
84
116
|
* provided via `Effect.provideService` inside `effect`: the run option lands in
|
|
85
117
|
* the fiber's root context, while a service provided within `effect` pops
|
|
86
|
-
* before the
|
|
87
|
-
*
|
|
88
|
-
*
|
|
118
|
+
* before the exit/encoding wrappers this function adds. The fiber's op counter
|
|
119
|
+
* survives context pops, so a cooperative yield can fire inside those wrappers.
|
|
120
|
+
* Only a root-context scheduler covers them.
|
|
121
|
+
*
|
|
122
|
+
* Under `@confect/test`, a handler reached from a bound test invocation starts
|
|
123
|
+
* with that invocation's services through `Effect.runPromiseWith`, on a fiber
|
|
124
|
+
* of its own. Every other handler starts with `Effect.runPromise`.
|
|
89
125
|
*/
|
|
90
126
|
const runHandlerPromise = (errorSchema, runOptions) => (effect) => {
|
|
91
|
-
const
|
|
92
|
-
|
|
93
|
-
|
|
127
|
+
const { observability, invocation, clock, meta, functionType } = runOptions ?? {};
|
|
128
|
+
let encodedError;
|
|
129
|
+
let undeclared;
|
|
130
|
+
const observed = Effect.tapCause(effect, (cause) => Effect.gen(function* () {
|
|
131
|
+
const reason = cause.reasons.find(Cause.isDieReason) ?? cause.reasons.find(Cause.isFailReason);
|
|
132
|
+
if (reason?._tag === "Fail" && errorSchema !== void 0) {
|
|
133
|
+
encodedError = yield* Effect.exit(Schema.encodeEffect(errorSchema)(reason.error));
|
|
134
|
+
if (Exit.isFailure(encodedError)) {
|
|
135
|
+
const encoding = encodedError.cause;
|
|
136
|
+
return yield* Cause.squash(encoding) instanceof ConvexError ? Effect.die(new Error(Cause.pretty(encoding), { cause: encoding })) : Effect.orDie(encodedError);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
if (reason?._tag === "Fail" && errorSchema === void 0 && !(reason.error instanceof ConvexError)) {
|
|
140
|
+
undeclared = { error: reason.error };
|
|
141
|
+
return yield* Effect.die(reason.error);
|
|
142
|
+
}
|
|
143
|
+
}));
|
|
144
|
+
const program = Effect.gen(function* () {
|
|
145
|
+
const exit = yield* Effect.exit(observability === void 0 || invocation === void 0 ? effect : Effect.flatMap(invocation, ({ name, type, componentPath, received }) => Effect.useSpan(name, {
|
|
146
|
+
root: true,
|
|
147
|
+
attributes: {
|
|
148
|
+
kind: type,
|
|
149
|
+
componentPath
|
|
150
|
+
}
|
|
151
|
+
}, (span) => Effect.provideService(observed, Tracer.ParentSpan, span)).pipe(Effect.provideService(Received, received))));
|
|
152
|
+
if (Exit.isSuccess(exit)) return Result.succeed(exit.value);
|
|
153
|
+
if (undeclared !== void 0) return yield* Effect.die(undeclared.error);
|
|
154
|
+
const cause = encodedError !== void 0 && Exit.isFailure(encodedError) ? encodedError.cause : exit.cause;
|
|
155
|
+
const reason = cause.reasons.find(Cause.isDieReason) ?? cause.reasons.find(Cause.isFailReason);
|
|
156
|
+
if (encodedError === void 0 && reason?._tag === "Die" && cause.reasons.length === 1 && reason.defect instanceof ConvexError) return Result.fail(reason.defect);
|
|
157
|
+
if (reason?._tag === "Fail") {
|
|
158
|
+
if (errorSchema === void 0) {
|
|
159
|
+
if (reason.error instanceof ConvexError) return Result.fail(reason.error);
|
|
160
|
+
return yield* Effect.die(reason.error);
|
|
161
|
+
}
|
|
162
|
+
const encoded = encodedError ?? (yield* Effect.exit(Schema.encodeEffect(errorSchema)(reason.error)));
|
|
163
|
+
if (Exit.isSuccess(encoded)) return Result.fail(new ConvexError(encoded.value));
|
|
164
|
+
return yield* Effect.die(new Error(Cause.pretty(encoded.cause), { cause: encoded.cause }));
|
|
165
|
+
}
|
|
166
|
+
return yield* Effect.die(new Error(Cause.pretty(cause), { cause }));
|
|
167
|
+
}).pipe(Effect.provide(observability === void 0 ? layer$7 : memoized(observability)), Effect.provideService(Console.Console, globalThis.console), clock === void 0 ? (self) => self : Effect.provideService(Clock.Clock, clock));
|
|
168
|
+
return ((meta === void 0 || functionType === void 0 ? void 0 : globalThis[testInvocation]?.start(meta, (services) => Effect.runPromiseWith(services)(program, runOptions), functionType)) ?? Effect.runPromise(program, runOptions)).then(Result.match({
|
|
94
169
|
onFailure: (error) => {
|
|
95
170
|
throw error;
|
|
96
171
|
},
|
|
97
172
|
onSuccess: (value) => value
|
|
98
173
|
}));
|
|
99
174
|
};
|
|
100
|
-
const
|
|
101
|
-
|
|
175
|
+
const domainArgs = (args, reservedArgument) => reservedArgument === void 0 ? args : Object.fromEntries(Object.entries(args).filter(([key]) => key !== reservedArgument));
|
|
176
|
+
const actionFunctionBase = ({ name, functionVisibility, args, returns, error, handler, resolvedMiddlewares = [], createLayer, scope = IdScope.app, observability, reservedArgument }) => ({
|
|
177
|
+
args: compileArgsSchema(args, scope, reservedArgument, name),
|
|
102
178
|
returns: compileReturnsSchema(returns, scope),
|
|
103
179
|
handler: (ctx, actualArgs) => Effect.gen(function* () {
|
|
104
|
-
const decodedArgs = yield* pipe(actualArgs, Schema.decodeUnknownEffect(args), Effect.catchTag("SchemaError", Effect.die));
|
|
180
|
+
const decodedArgs = yield* pipe(domainArgs(actualArgs, reservedArgument), Schema.decodeUnknownEffect(args), Effect.catchTag("SchemaError", Effect.die));
|
|
181
|
+
const restricted = resolvedMiddlewares.some(({ middlewareSpec }) => middlewareSpec.key === ActionCallSpec.Middleware.key) ? restrict(ctx) : void 0;
|
|
105
182
|
const decodedReturns = yield* applyMiddleware(handler(decodedArgs), resolvedMiddlewares, {
|
|
106
183
|
name,
|
|
107
184
|
functionType: "action",
|
|
108
185
|
functionVisibility,
|
|
109
186
|
args: decodedArgs
|
|
110
|
-
}).pipe(Effect.provide(createLayer(ctx)));
|
|
187
|
+
}).pipe(Effect.provide(createLayer(restricted?.ctx ?? ctx)));
|
|
188
|
+
if (restricted !== void 0) yield* restricted.check;
|
|
111
189
|
return yield* pipe(decodedReturns, Schema.encodeEffect(returns), Effect.catchTag("SchemaError", Effect.die));
|
|
112
|
-
}).pipe(runHandlerPromise(combineErrorSchemas(error, resolvedMiddlewares)
|
|
190
|
+
}).pipe(runHandlerPromise(combineErrorSchemas(error, resolvedMiddlewares), {
|
|
191
|
+
invocation: invocationMetadata(ctx.meta, actualArgs, reservedArgument),
|
|
192
|
+
observability,
|
|
193
|
+
meta: ctx.meta,
|
|
194
|
+
functionType: "action"
|
|
195
|
+
}))
|
|
113
196
|
});
|
|
114
197
|
/**
|
|
115
198
|
* The ctx-backed action services that don't depend on a Confect database
|
|
116
199
|
* schema. {@link actionLayer} adds the schema-typed `VectorSearch` on top; the
|
|
117
200
|
* HTTP API handler uses this base directly.
|
|
118
201
|
*/
|
|
119
|
-
const baseActionLayer = (ctx) => Layer.mergeAll(layer$
|
|
120
|
-
const actionLayer = (databaseSchema, ctx) => Layer.mergeAll(layer$
|
|
121
|
-
const storageLayer = (reader) => layer$
|
|
202
|
+
const baseActionLayer = (ctx) => Layer.mergeAll(layer$4(ctx.scheduler), layer$5(ctx.auth), layer$8(ctx.meta), layer$9(ctx.meta), layer$10(ctx.storage), StorageWriter.layer(ctx.storage), StorageActionWriter.layer(ctx.storage), layer$3(ctx.runQuery.bind(ctx)), layer$2(ctx.runMutation.bind(ctx)), layer$1(ctx.runAction.bind(ctx)), Layer.succeed(ActionCtx(), ctx));
|
|
203
|
+
const actionLayer = (databaseSchema, ctx) => Layer.mergeAll(layer$4(ctx.scheduler, databaseSchema.target.scope), layerForTarget(databaseSchema.target, ctx.auth), layer$8(ctx.meta), layer$9(ctx.meta), storageLayer(ctx.storage), StorageWriter.layer(ctx.storage, databaseSchema.target.scope), StorageActionWriter.layer(ctx.storage, databaseSchema.target.scope), layer$3(ctx.runQuery.bind(ctx)), layer$2(ctx.runMutation.bind(ctx)), layer$1(ctx.runAction.bind(ctx)), layer(ctx, databaseSchema.target.scope), layer$11(ctx.vectorSearch.bind(ctx)));
|
|
204
|
+
const storageLayer = (reader) => layer$10(reader);
|
|
205
|
+
/**
|
|
206
|
+
* Shares one dispatch budget across the entire middleware chain.
|
|
207
|
+
*/
|
|
208
|
+
const restrict = (ctx) => {
|
|
209
|
+
let dispatched = false;
|
|
210
|
+
const claim = () => {
|
|
211
|
+
if (dispatched) throw new ActionCallAlreadyUsed();
|
|
212
|
+
dispatched = true;
|
|
213
|
+
};
|
|
214
|
+
return {
|
|
215
|
+
ctx: {
|
|
216
|
+
...ctx,
|
|
217
|
+
scheduler: {
|
|
218
|
+
runAfter: () => {
|
|
219
|
+
throw new SchedulingNotAllowed();
|
|
220
|
+
},
|
|
221
|
+
runAt: () => {
|
|
222
|
+
throw new SchedulingNotAllowed();
|
|
223
|
+
},
|
|
224
|
+
cancel: () => {
|
|
225
|
+
throw new SchedulingNotAllowed();
|
|
226
|
+
}
|
|
227
|
+
},
|
|
228
|
+
runQuery: (...args) => {
|
|
229
|
+
claim();
|
|
230
|
+
return ctx.runQuery(...args);
|
|
231
|
+
},
|
|
232
|
+
runMutation: (...args) => {
|
|
233
|
+
claim();
|
|
234
|
+
return ctx.runMutation(...args);
|
|
235
|
+
},
|
|
236
|
+
runAction: () => {
|
|
237
|
+
throw new NestedActionNotAllowed();
|
|
238
|
+
}
|
|
239
|
+
},
|
|
240
|
+
check: Effect.suspend(() => dispatched ? Effect.void : Effect.die(new ActionCallNotUsed()))
|
|
241
|
+
};
|
|
242
|
+
};
|
|
122
243
|
//#endregion
|
|
123
|
-
export { RegisteredFunction_exports, actionFunctionBase, actionLayer, applyMiddleware, baseActionLayer, combineErrorSchemas, runHandlerPromise, storageLayer };
|
|
244
|
+
export { Forward, Observability, Received, RegisteredFunction_exports, actionFunctionBase, actionLayer, applyMiddleware, baseActionLayer, combineErrorSchemas, domainArgs, invocationMetadata, runHandlerPromise, storageLayer };
|
|
124
245
|
|
|
125
246
|
//# sourceMappingURL=RegisteredFunction.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RegisteredFunction.js","names":["ConvexLogger.layer","Scheduler.layer","Auth.layer","ExecutionMetadata.layer","RequestMetadata.layer","Storage.layer","QueryRunner.layer","MutationRunner.layer","ActionRunner.layer","ActionCtx.ActionCtx","Auth.layerForTarget","ActionCtx.layer","VectorSearch.layer"],"sources":["../src/RegisteredFunction.ts"],"sourcesContent":["import 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 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 Console from \"effect/Console\";\nimport * as Effect from \"effect/Effect\";\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 VectorSearch from \"./VectorSearch.js\";\nimport type * as Handler from \"./Handler.js\";\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`. The error schema acts as an allowlist of\n * failures that may be surfaced to the client as a `ConvexError`:\n *\n * - With a schema: typed errors are schema-encoded and wrapped in a\n * `ConvexError`, then thrown so Convex surfaces the data to the client.\n * `Effect.either` escapes the failure channel before `runPromise` so the\n * thrown `ConvexError` retains its `Symbol.for(\"ConvexError\")` identity\n * instead of being wrapped in Effect's `FiberFailure`.\n * - Without a schema: every failure is converted to a defect via `Effect.orDie`,\n * so nothing—not even a `ConvexError` the handler placed in its error\n * channel—reaches the client as a `ConvexError`. The fiber dies and\n * `runPromise` rejects with a generic failure.\n *\n * Either way, a `ConvexError` _defect_—thrown imperatively rather than placed\n * in the error channel, e.g. the pagination protocol's `InvalidCursor` signal\n * from `QueryStream.paginate`—is rethrown bare so it retains its identity and\n * Convex serializes its `data` to the client, matching how a thrown\n * `ConvexError` behaves in a plain Convex handler.\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 `orDie`/`catch`/`result` wrappers this function adds. The fiber's\n * op counter survives context pops, so a cooperative yield can fire inside\n * those wrappers—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 },\n ) =>\n <A, E>(effect: Effect.Effect<A, E>): Promise<A> => {\n // A `ConvexError` defect escapes into the (escaped) failure channel so\n // the `throw` below rethrows it with its identity intact.\n const rethrowConvexErrorDefects = Effect.catchDefect(\n (defect: unknown): Effect.Effect<never, ConvexError<any>> =>\n defect instanceof ConvexError\n ? Effect.fail(defect)\n : Effect.die(defect),\n );\n\n const withConvexError =\n errorSchema === undefined\n ? Effect.orDie(effect)\n : effect.pipe(\n Effect.catch((typedError) =>\n pipe(\n Schema.encodeEffect(errorSchema)(typedError),\n Effect.catchTag(\"SchemaError\", Effect.die),\n Effect.andThen((encodedError) =>\n Effect.fail(new ConvexError(encodedError)),\n ),\n ),\n ),\n );\n return Effect.runPromise(\n Effect.result(rethrowConvexErrorDefects(withConvexError)).pipe(\n Effect.provide(ConvexLogger.layer),\n Effect.provideService(Console.Console, globalThis.console),\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}: {\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}) => ({\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 // 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(ctx)));\n return yield* pipe(\n decodedReturns,\n Schema.encodeEffect(returns),\n Effect.catchTag(\"SchemaError\", Effect.die),\n );\n }).pipe(runHandlerPromise(combineErrorSchemas(error, resolvedMiddlewares))),\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"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RegisteredFunction.js","names":["ConvexConfigProvider.layer","ConvexLogger.layer","ObservabilityRuntime.memoized","Scheduler.layer","Auth.layer","ExecutionMetadata.layer","RequestMetadata.layer","Storage.layer","QueryRunner.layer","MutationRunner.layer","ActionRunner.layer","ActionCtx.ActionCtx","Auth.layerForTarget","ActionCtx.layer","VectorSearch.layer","ActionCall.ActionCallAlreadyUsed","ActionCall.SchedulingNotAllowed","ActionCall.NestedActionNotAllowed","ActionCall.ActionCallNotUsed"],"sources":["../src/RegisteredFunction.ts"],"sourcesContent":["export { Forward } from \"./internal/reservedArgument.js\";\nimport * as ActionCallSpec from \"@confect/core/ActionCall\";\nimport * as ActionCall from \"./ActionCall.js\";\nimport type { FunctionSpec, RuntimeAndFunctionType } from \"@confect/core\";\nimport * as IdScope from \"@confect/core/IdScope\";\nimport type * as FunctionProvenance from \"@confect/core/FunctionProvenance\";\nimport * as MiddlewareSpec from \"@confect/core/MiddlewareSpec\";\nimport {\n compileArgsSchema,\n compileReturnsSchema,\n} from \"@confect/core/SchemaToValidator\";\nimport {\n type DefaultFunctionArgs,\n type FunctionVisibility,\n type FunctionMetadata,\n type MutationMeta,\n type QueryMeta,\n type GenericActionCtx,\n type GenericDataModel,\n type StorageReader as ConvexStorageReader,\n type RegisteredAction,\n type RegisteredMutation,\n type RegisteredQuery,\n} from \"convex/server\";\nimport type { Value } from \"convex/values\";\nimport { ConvexError } from \"convex/values\";\nimport { pipe } from \"effect/Function\";\nimport * as Config from \"effect/Config\";\nimport * as Option from \"effect/Option\";\nimport * as ConvexConfigProvider from \"./ConvexConfigProvider.js\";\nimport * as Clock from \"effect/Clock\";\nimport * as Cause from \"effect/Cause\";\nimport * as Console from \"effect/Console\";\nimport * as Context from \"effect/Context\";\nimport * as Effect from \"effect/Effect\";\nimport * as Exit from \"effect/Exit\";\nimport * as Result from \"effect/Result\";\nimport * as Layer from \"effect/Layer\";\nimport * as Schema from \"effect/Schema\";\nimport type * as EffectScheduler from \"effect/Scheduler\";\nimport * as ActionCtx from \"./ActionCtx.js\";\nimport * as ActionRunner from \"./ActionRunner.js\";\nimport * as Auth from \"./Auth.js\";\nimport * as ConvexLogger from \"./ConvexLogger.js\";\nimport type * as DatabaseSchema from \"./DatabaseSchema.js\";\nimport type * as DataModel from \"./DataModel.js\";\nimport * as ExecutionMetadata from \"./ExecutionMetadata.js\";\nimport * as RequestMetadata from \"./RequestMetadata.js\";\nimport * as MutationRunner from \"./MutationRunner.js\";\nimport * as QueryRunner from \"./QueryRunner.js\";\nimport type * as ResolvedMiddleware from \"./ResolvedMiddleware.js\";\nimport * as Scheduler from \"./Scheduler.js\";\nimport * as Storage from \"./Storage.js\";\nimport * as StorageActionWriter from \"./StorageActionWriter.js\";\nimport type * as StorageReader from \"./StorageReader.js\";\nimport * as StorageWriter from \"./StorageWriter.js\";\nimport * as Tracer from \"effect/Tracer\";\nimport * as ObservabilityRuntime from \"./internal/observability.js\";\nimport * as VectorSearch from \"./VectorSearch.js\";\nimport type * as Handler from \"./Handler.js\";\n\nexport interface ReceivedValue {\n readonly value: unknown;\n readonly requestId: string;\n readonly deployment: string | undefined;\n readonly visibility?: FunctionVisibility;\n}\n\nexport const Received = Context.Reference<ReceivedValue | undefined>(\n \"@confect/server/RegisteredFunction/Received\",\n { defaultValue: () => undefined },\n);\n\nexport const invocationMetadata = (\n meta: Pick<MutationMeta, \"getFunctionMetadata\" | \"getRequestMetadata\">,\n args: DefaultFunctionArgs,\n reservedArgument?: string,\n): Effect.Effect<FunctionMetadata & { readonly received?: ReceivedValue }> =>\n Effect.gen(function* () {\n const metadata = yield* Effect.promise(() => meta.getFunctionMetadata());\n if (reservedArgument === undefined) return metadata;\n const { requestId } = yield* Effect.promise(() =>\n meta.getRequestMetadata(),\n );\n const deployment = yield* Config.String(\"CONVEX_CLOUD_URL\").pipe(\n Config.option,\n Effect.map(Option.getOrUndefined),\n Effect.provide(ConvexConfigProvider.layer),\n Effect.orDie,\n );\n return {\n ...metadata,\n received: {\n value: args[reservedArgument],\n requestId,\n deployment,\n ...(metadata.visibility === undefined\n ? {}\n : { visibility: metadata.visibility }),\n },\n };\n });\n\nexport const Observability = Context.Reference<Layer.Layer<never> | undefined>(\n \"@confect/server/Observability\",\n { defaultValue: () => undefined },\n);\n\nexport type Any =\n | RegisteredQuery<FunctionVisibility, DefaultFunctionArgs, any>\n | RegisteredMutation<FunctionVisibility, DefaultFunctionArgs, any>\n | RegisteredAction<FunctionVisibility, DefaultFunctionArgs, any>;\n\ntype ConfectRegisteredFunction<\n FunctionSpec_ extends FunctionSpec.AnyWithProps,\n> =\n FunctionSpec.EncodedArgs<FunctionSpec_> extends infer Args_ extends\n DefaultFunctionArgs\n ? RuntimeAndFunctionType.GetFunctionType<\n FunctionSpec_[\"runtimeAndFunctionType\"]\n > extends \"query\"\n ? RegisteredQuery<\n FunctionSpec.GetFunctionVisibility<FunctionSpec_>,\n Args_,\n Promise<FunctionSpec.EncodedReturns<FunctionSpec_>>\n >\n : RuntimeAndFunctionType.GetFunctionType<\n FunctionSpec_[\"runtimeAndFunctionType\"]\n > extends \"mutation\"\n ? RegisteredMutation<\n FunctionSpec.GetFunctionVisibility<FunctionSpec_>,\n Args_,\n Promise<FunctionSpec.EncodedReturns<FunctionSpec_>>\n >\n : RuntimeAndFunctionType.GetFunctionType<\n FunctionSpec_[\"runtimeAndFunctionType\"]\n > extends \"action\"\n ? RegisteredAction<\n FunctionSpec.GetFunctionVisibility<FunctionSpec_>,\n Args_,\n Promise<FunctionSpec.EncodedReturns<FunctionSpec_>>\n >\n : never\n : never;\n\nexport type ConvexRegisteredFunction<\n FunctionSpec_ extends FunctionSpec.AnyWithProps,\n> = FunctionSpec_ extends FunctionSpec.AnyWithProps\n ? FunctionSpec.GetFunctionProvenance<FunctionSpec_> extends FunctionProvenance.Convex<\n infer Args_ extends DefaultFunctionArgs,\n infer Returns_\n >\n ? RuntimeAndFunctionType.GetFunctionType<\n FunctionSpec_[\"runtimeAndFunctionType\"]\n > extends \"query\"\n ? RegisteredQuery<\n FunctionSpec.GetFunctionVisibility<FunctionSpec_>,\n Args_,\n Returns_\n >\n : RuntimeAndFunctionType.GetFunctionType<\n FunctionSpec_[\"runtimeAndFunctionType\"]\n > extends \"mutation\"\n ? RegisteredMutation<\n FunctionSpec.GetFunctionVisibility<FunctionSpec_>,\n Args_,\n Returns_\n >\n : RuntimeAndFunctionType.GetFunctionType<\n FunctionSpec_[\"runtimeAndFunctionType\"]\n > extends \"action\"\n ? RegisteredAction<\n FunctionSpec.GetFunctionVisibility<FunctionSpec_>,\n Args_,\n Returns_\n >\n : never\n : never\n : never;\n\nexport type RegisteredFunction<\n FunctionSpec_ extends FunctionSpec.AnyWithProps,\n> =\n FunctionSpec_ extends FunctionSpec.WithFunctionProvenance<\n FunctionSpec_,\n FunctionProvenance.AnyConvex\n >\n ? ConvexRegisteredFunction<FunctionSpec_>\n : FunctionSpec_ extends FunctionSpec.WithFunctionProvenance<\n FunctionSpec_,\n FunctionProvenance.AnyConfect\n >\n ? ConfectRegisteredFunction<FunctionSpec_>\n : never;\n\n/**\n * Wrap a function's handler effect in its resolved middleware chain, per\n * invocation, after args decode. Iterated innermost-first so that the\n * first-attached (group-level, in attachment order) middleware ends up\n * outermost and runs first. Erased types: the public safety story lives at the\n * `MiddlewareSpec.MiddlewareImpl`/`MiddlewareImpl.make` signatures, and the\n * composed effect's error channel is re-accounted by\n * {@link combineErrorSchemas}.\n */\nexport const applyMiddleware = <A, E, R>(\n effect: Effect.Effect<A, E, R>,\n resolvedMiddlewares: ReadonlyArray<ResolvedMiddleware.ResolvedMiddleware>,\n invocation: MiddlewareSpec.MiddlewareOptions[\"invocation\"],\n): Effect.Effect<A, any, R> => {\n return resolvedMiddlewares.reduceRight<Effect.Effect<any, any, any>>(\n // oxlint-disable-next-line effecttsgo/any-unknown-in-error-context -- The erased middleware error remains intact so runHandlerPromise can validate it against the combined error schema.\n (wrapped, middleware) => {\n const context =\n \"options\" in middleware.middlewareSpec\n ? { options: middleware.options, invocation }\n : { invocation };\n // oxlint-disable-next-line effecttsgo/any-unknown-in-error-context -- Resolved middleware is type-erased after its public implementation boundary; its error and service channels are restored by the surrounding function contract.\n return middleware.middlewareImpl(wrapped, context);\n },\n effect,\n );\n};\n\n/**\n * The error-schema allowlist for a function with middleware: the function's own\n * declared `error` schema unioned with every covering middleware's error\n * schema. `undefined` (⇒ every failure dies) only when neither declares\n * one—mirroring the ref-side union clients decode against.\n */\nexport const combineErrorSchemas = (\n error: Schema.Codec<any, any> | undefined,\n resolvedMiddlewares: ReadonlyArray<ResolvedMiddleware.ResolvedMiddleware>,\n): Schema.Codec<any, any> | undefined => {\n const schemas = [\n ...(error !== undefined ? [error] : []),\n ...MiddlewareSpec.errorSchemas(\n resolvedMiddlewares.map(({ middlewareSpec }) => middlewareSpec),\n ),\n ];\n return schemas.length === 0\n ? undefined\n : schemas.length === 1\n ? schemas[0]\n : Schema.Union(schemas);\n};\n\ntype InvocationMeta = Pick<QueryMeta, \"getFunctionMetadata\"> &\n Partial<Pick<MutationMeta, \"getRequestMetadata\">>;\n\ntype InvocationFunctionType = \"query\" | \"mutation\" | \"action\";\n\n/**\n * What `@confect/test` installs on `globalThis` under {@link testInvocation}.\n * `start` runs `run` with the services of the test invocation the handler\n * belongs to, with the handler's `Date`, `Math.random` and\n * `crypto.getRandomValues` pinned to that invocation, or answers `undefined`\n * when none is bound. `functionType` decides how `Date` reads: a query or\n * mutation keeps its start time, an action follows the clock. Production never\n * installs it.\n */\ntype TestInvocation = {\n readonly start: <A>(\n meta: InvocationMeta,\n run: (services: Context.Context<never>) => Promise<A>,\n functionType: InvocationFunctionType,\n ) => Promise<A> | undefined;\n};\n\nconst testInvocation = Symbol.for(\"@confect/test/Invocation\");\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 *\n * Under `@confect/test`, a handler reached from a bound test invocation starts\n * with that invocation's services through `Effect.runPromiseWith`, on a fiber\n * of its own. Every other handler starts with `Effect.runPromise`.\n */\nexport const runHandlerPromise =\n (\n errorSchema: Schema.Codec<any, any> | undefined,\n runOptions?: {\n readonly scheduler?: EffectScheduler.Scheduler | undefined;\n readonly clock?: Clock.Clock | undefined;\n readonly invocation?:\n | Effect.Effect<\n FunctionMetadata & { readonly received?: ReceivedValue }\n >\n | undefined;\n readonly observability?: Layer.Layer<never> | undefined;\n readonly meta?: InvocationMeta | undefined;\n readonly functionType?: InvocationFunctionType | undefined;\n },\n ) =>\n <A, E>(effect: Effect.Effect<A, E>): Promise<A> => {\n const { observability, invocation, clock, meta, functionType } =\n runOptions ?? {};\n let encodedError: Exit.Exit<any, any> | undefined;\n let undeclared: { readonly error: unknown } | undefined;\n const observed = Effect.tapCause(effect, (cause) =>\n Effect.gen(function* () {\n const reason =\n cause.reasons.find(Cause.isDieReason) ??\n cause.reasons.find(Cause.isFailReason);\n if (reason?._tag === \"Fail\" && errorSchema !== undefined) {\n encodedError = yield* Effect.exit(\n Schema.encodeEffect(errorSchema)(reason.error),\n );\n // An encoding failure is a defect, even when it dies with a ConvexError.\n if (Exit.isFailure(encodedError)) {\n const encoding = encodedError.cause;\n return yield* Cause.squash(encoding) instanceof ConvexError\n ? Effect.die(\n new Error(Cause.pretty(encoding), { cause: encoding }),\n )\n : Effect.orDie(encodedError);\n }\n }\n // With no error schema a failure is a defect, so the root span ends as one.\n if (\n reason?._tag === \"Fail\" &&\n errorSchema === undefined &&\n !(reason.error instanceof ConvexError)\n ) {\n undeclared = { error: reason.error };\n return yield* Effect.die(reason.error);\n }\n }),\n );\n const withConvexError: Effect.Effect<Result.Result<A, ConvexError<any>>> =\n Effect.gen(function* () {\n const exit = yield* Effect.exit(\n observability === undefined || invocation === undefined\n ? effect\n : Effect.flatMap(\n invocation,\n ({ name, type, componentPath, received }) =>\n Effect.useSpan(\n name,\n {\n root: true,\n attributes: { kind: type, componentPath },\n },\n (span) =>\n Effect.provideService(observed, Tracer.ParentSpan, span),\n ).pipe(Effect.provideService(Received, received)),\n ),\n );\n if (Exit.isSuccess(exit)) {\n return Result.succeed(exit.value);\n }\n if (undeclared !== undefined)\n return yield* Effect.die(undeclared.error);\n\n const cause =\n encodedError !== undefined && Exit.isFailure(encodedError)\n ? encodedError.cause\n : exit.cause;\n const reason =\n cause.reasons.find(Cause.isDieReason) ??\n cause.reasons.find(Cause.isFailReason);\n if (\n encodedError === undefined &&\n reason?._tag === \"Die\" &&\n cause.reasons.length === 1 &&\n reason.defect instanceof ConvexError\n ) {\n return Result.fail(reason.defect);\n }\n\n if (reason?._tag === \"Fail\") {\n if (errorSchema === undefined) {\n if (reason.error instanceof ConvexError) {\n return Result.fail(reason.error);\n }\n return yield* Effect.die(reason.error);\n }\n const encoded =\n encodedError ??\n (yield* Effect.exit(\n Schema.encodeEffect(errorSchema)(reason.error),\n ));\n if (Exit.isSuccess(encoded)) {\n return Result.fail(new ConvexError(encoded.value));\n }\n return yield* Effect.die(\n new Error(Cause.pretty(encoded.cause), { cause: encoded.cause }),\n );\n }\n return yield* Effect.die(new Error(Cause.pretty(cause), { cause }));\n });\n const program = 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 const started =\n meta === undefined || functionType === undefined\n ? undefined\n : (globalThis as { [testInvocation]?: TestInvocation })[\n testInvocation\n ]?.start(\n meta,\n (services) => Effect.runPromiseWith(services)(program, runOptions),\n functionType,\n );\n return (started ?? Effect.runPromise(program, runOptions)).then(\n Result.match({\n onFailure: (error) => {\n throw error;\n },\n onSuccess: (value) => value,\n }),\n );\n };\n\nexport const domainArgs = (\n args: DefaultFunctionArgs,\n reservedArgument?: string,\n): DefaultFunctionArgs =>\n reservedArgument === undefined\n ? args\n : Object.fromEntries(\n Object.entries(args).filter(([key]) => key !== reservedArgument),\n );\n\nexport const actionFunctionBase = <\n Schema extends DatabaseSchema.AnyWithProps,\n Args,\n ConvexArgs extends DefaultFunctionArgs,\n Returns,\n ConvexReturns,\n E,\n R,\n>({\n name,\n functionVisibility,\n args,\n returns,\n error,\n handler,\n resolvedMiddlewares = [],\n createLayer,\n scope = IdScope.app,\n observability,\n reservedArgument,\n}: {\n name: string;\n reservedArgument?: string | undefined;\n functionVisibility: FunctionVisibility;\n args: Schema.Codec<Args, ConvexArgs>;\n returns: Schema.Codec<Returns, ConvexReturns>;\n error: Schema.Codec<Error, Value> | undefined;\n handler: (a: Args) => Effect.Effect<Returns, E, R>;\n resolvedMiddlewares?: ReadonlyArray<ResolvedMiddleware.ResolvedMiddleware>;\n createLayer: (\n ctx: GenericActionCtx<DataModel.ToConvex<DataModel.FromSchema<Schema>>>,\n ) => Layer.Layer<R>;\n scope?: IdScope.IdScope;\n observability?: Layer.Layer<never> | undefined;\n}) => ({\n args: compileArgsSchema(args, scope, reservedArgument, name),\n returns: compileReturnsSchema(returns, scope),\n handler: (\n ctx: GenericActionCtx<DataModel.ToConvex<DataModel.FromSchema<Schema>>>,\n actualArgs: ConvexArgs,\n ): Promise<ConvexReturns> =>\n Effect.gen(function* () {\n const decodedArgs = yield* pipe(\n domainArgs(actualArgs, reservedArgument),\n Schema.decodeUnknownEffect(args),\n Effect.catchTag(\"SchemaError\", Effect.die),\n );\n const restricted = resolvedMiddlewares.some(\n ({ middlewareSpec }) =>\n middlewareSpec.key === ActionCallSpec.Middleware.key,\n )\n ? restrict(ctx)\n : undefined;\n // oxlint-disable-next-line effecttsgo/any-unknown-in-error-context -- Middleware errors are intentionally erased here and validated by runHandlerPromise against the combined error schema below.\n const decodedReturns = yield* applyMiddleware(\n handler(decodedArgs),\n resolvedMiddlewares,\n {\n name,\n functionType: \"action\",\n functionVisibility,\n args: decodedArgs,\n },\n ).pipe(Effect.provide(createLayer(restricted?.ctx ?? ctx)));\n if (restricted !== undefined) yield* restricted.check;\n return yield* pipe(\n decodedReturns,\n Schema.encodeEffect(returns),\n Effect.catchTag(\"SchemaError\", Effect.die),\n );\n }).pipe(\n runHandlerPromise(combineErrorSchemas(error, resolvedMiddlewares), {\n invocation: invocationMetadata(ctx.meta, actualArgs, reservedArgument),\n observability,\n meta: ctx.meta,\n functionType: \"action\",\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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"}
|
|
@@ -7,5 +7,5 @@ import type * as GroupSpec from "@confect/core/GroupSpec";
|
|
|
7
7
|
import type * as GroupImpl from "./GroupImpl.js";
|
|
8
8
|
import type * as RegisteredFunctions from "./RegisteredFunctions.js";
|
|
9
9
|
export declare const buildForGroup: <Group extends GroupSpec.AnyWithProps>(databaseSchema: DatabaseSchema.AnyWithProps, groupLayer: Layer.Layer<GroupImpl.GroupImpl<"Finalized">>) => RegisteredFunctions.RegisteredFunctionsForGroupSpec<Group>;
|
|
10
|
-
export declare const make: (databaseSchema: DatabaseSchema.AnyWithProps, item: FunctionRegistryItem.ConfectFunctionRegistryItem, resolvedMiddlewares?: ReadonlyArray<ResolvedMiddleware.ResolvedMiddleware>) => RegisteredFunction.Any;
|
|
10
|
+
export declare const make: (databaseSchema: DatabaseSchema.AnyWithProps, item: FunctionRegistryItem.ConfectFunctionRegistryItem, resolvedMiddlewares?: ReadonlyArray<ResolvedMiddleware.ResolvedMiddleware>, observability?: Layer.Layer<never>) => RegisteredFunction.Any;
|
|
11
11
|
//# sourceMappingURL=RegisteredNodeFunction.d.ts.map
|
|
@@ -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,
|
|
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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { __exportAll } from "./_virtual/_rolldown/runtime.js";
|
|
2
|
+
import { mapLeaves } from "./internal/utils.js";
|
|
3
|
+
import { actionFunctionBase, actionLayer } from "./RegisteredFunction.js";
|
|
2
4
|
import { make as make$1 } from "./GroupRegistry.js";
|
|
3
5
|
import { isFunctionRegistryItem } from "./FunctionRegistryItem.js";
|
|
4
|
-
import { actionFunctionBase, actionLayer } from "./RegisteredFunction.js";
|
|
5
6
|
import { resolve } from "./ResolvedMiddleware.js";
|
|
6
|
-
import { mapLeaves } from "./internal/utils.js";
|
|
7
7
|
import * as Layer from "effect/Layer";
|
|
8
8
|
import { actionGeneric, internalActionGeneric } from "convex/server";
|
|
9
9
|
import * as Match from "effect/Match";
|
|
@@ -14,12 +14,14 @@ var RegisteredNodeFunction_exports = /* @__PURE__ */ __exportAll({
|
|
|
14
14
|
make: () => make
|
|
15
15
|
});
|
|
16
16
|
const buildForGroup = (databaseSchema, groupLayer) => {
|
|
17
|
-
const { functionRegistryItems, middlewareRegistryItems } = make$1(groupLayer);
|
|
18
|
-
return mapLeaves(functionRegistryItems, isFunctionRegistryItem, (item) => Match.value(item).pipe(Match.tag("Convex", ({ handler }) => handler), Match.tag("Confect", (confect) => make(databaseSchema, confect, resolve(confect, middlewareRegistryItems))), Match.exhaustive));
|
|
17
|
+
const { functionRegistryItems, middlewareRegistryItems, observability } = make$1(groupLayer);
|
|
18
|
+
return mapLeaves(functionRegistryItems, isFunctionRegistryItem, (item) => Match.value(item).pipe(Match.tag("Convex", ({ handler }) => handler), Match.tag("Confect", (confect) => make(databaseSchema, confect, resolve(confect, middlewareRegistryItems), observability)), Match.exhaustive));
|
|
19
19
|
};
|
|
20
|
-
const make = (databaseSchema, item, resolvedMiddlewares = []) => {
|
|
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,
|
|
24
|
+
observability,
|
|
23
25
|
functionVisibility: item.functionVisibility,
|
|
24
26
|
args: item.args,
|
|
25
27
|
returns: item.returns,
|
|
@@ -28,7 +30,7 @@ const make = (databaseSchema, item, resolvedMiddlewares = []) => {
|
|
|
28
30
|
resolvedMiddlewares
|
|
29
31
|
}));
|
|
30
32
|
};
|
|
31
|
-
const nodeActionFunction = (databaseSchema, { name, functionVisibility, args, returns, error, handler, resolvedMiddlewares }) => actionFunctionBase({
|
|
33
|
+
const nodeActionFunction = (databaseSchema, { name, functionVisibility, args, returns, error, handler, resolvedMiddlewares, observability, reservedArgument }) => actionFunctionBase({
|
|
32
34
|
scope: databaseSchema.target.scope,
|
|
33
35
|
name,
|
|
34
36
|
functionVisibility,
|
|
@@ -37,6 +39,8 @@ const nodeActionFunction = (databaseSchema, { name, functionVisibility, args, re
|
|
|
37
39
|
error,
|
|
38
40
|
handler,
|
|
39
41
|
resolvedMiddlewares,
|
|
42
|
+
observability,
|
|
43
|
+
reservedArgument,
|
|
40
44
|
createLayer: (ctx) => Layer.mergeAll(actionLayer(databaseSchema, ctx), NodeServices.layer)
|
|
41
45
|
});
|
|
42
46
|
//#endregion
|