@gaganref/confect-server 10.3.1-fork.2 → 10.3.1-fork.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. package/dist/ActionCtx.d.ts +1 -1
  2. package/dist/ActionCtx.d.ts.map +1 -1
  3. package/dist/ActionCtx.js.map +1 -1
  4. package/dist/AiGatewayDecisionClient.d.ts +2 -2
  5. package/dist/AiGatewayDecisionClient.d.ts.map +1 -1
  6. package/dist/AiGatewayDecisionClient.js.map +1 -1
  7. package/dist/AiGatewayLanguageClient.d.ts +2 -2
  8. package/dist/AiGatewayLanguageClient.d.ts.map +1 -1
  9. package/dist/AiGatewayLanguageClient.js.map +1 -1
  10. package/dist/Auth.d.ts +1 -1
  11. package/dist/Auth.d.ts.map +1 -1
  12. package/dist/Auth.js.map +1 -1
  13. package/dist/ComponentCtx.d.ts +1 -1
  14. package/dist/ComponentCtx.d.ts.map +1 -1
  15. package/dist/ConvexFunctionDefinitions.d.ts +4 -4
  16. package/dist/ConvexFunctionDefinitions.d.ts.map +1 -1
  17. package/dist/ConvexFunctionDefinitions.js.map +1 -1
  18. package/dist/CronJobs.d.ts +1 -1
  19. package/dist/CronJobs.d.ts.map +1 -1
  20. package/dist/CronJobs.js.map +1 -1
  21. package/dist/DataModel.d.ts +3 -3
  22. package/dist/DataModel.d.ts.map +1 -1
  23. package/dist/DataModel.js.map +1 -1
  24. package/dist/DatabaseReader.d.ts +4 -4
  25. package/dist/DatabaseReader.d.ts.map +1 -1
  26. package/dist/DatabaseReader.js.map +1 -1
  27. package/dist/DatabaseSchema.d.ts +1 -1
  28. package/dist/DatabaseSchema.d.ts.map +1 -1
  29. package/dist/DatabaseSchema.js.map +1 -1
  30. package/dist/DatabaseWriter.d.ts +5 -5
  31. package/dist/DatabaseWriter.d.ts.map +1 -1
  32. package/dist/DatabaseWriter.js +23 -3
  33. package/dist/DatabaseWriter.js.map +1 -1
  34. package/dist/Document.d.ts +4 -4
  35. package/dist/Document.d.ts.map +1 -1
  36. package/dist/Document.js.map +1 -1
  37. package/dist/FunctionImpl.d.ts +2 -2
  38. package/dist/FunctionImpl.d.ts.map +1 -1
  39. package/dist/FunctionImpl.js.map +1 -1
  40. package/dist/FunctionRegistryItem.d.ts +1 -1
  41. package/dist/FunctionRegistryItem.d.ts.map +1 -1
  42. package/dist/FunctionRegistryItem.js.map +1 -1
  43. package/dist/GroupImpl.d.ts +24 -5
  44. package/dist/GroupImpl.d.ts.map +1 -1
  45. package/dist/GroupImpl.js +17 -18
  46. package/dist/GroupImpl.js.map +1 -1
  47. package/dist/GroupRegistry.d.ts +2 -2
  48. package/dist/GroupRegistry.d.ts.map +1 -1
  49. package/dist/GroupRegistry.js.map +1 -1
  50. package/dist/Handler.d.ts +23 -23
  51. package/dist/Handler.d.ts.map +1 -1
  52. package/dist/Handler.js.map +1 -1
  53. package/dist/HttpRouter.d.ts +13 -13
  54. package/dist/HttpRouter.d.ts.map +1 -1
  55. package/dist/HttpRouter.js.map +1 -1
  56. package/dist/MiddlewareImpl.d.ts +14 -14
  57. package/dist/MiddlewareImpl.d.ts.map +1 -1
  58. package/dist/MiddlewareImpl.js.map +1 -1
  59. package/dist/MutationCtx.d.ts +1 -1
  60. package/dist/MutationCtx.d.ts.map +1 -1
  61. package/dist/MutationCtx.js.map +1 -1
  62. package/dist/MutationRunner.d.ts +1 -1
  63. package/dist/MutationRunner.d.ts.map +1 -1
  64. package/dist/MutationRunner.js.map +1 -1
  65. package/dist/MutationTransactionContext.d.ts +2 -2
  66. package/dist/MutationTransactionContext.d.ts.map +1 -1
  67. package/dist/MutationTransactionContext.js.map +1 -1
  68. package/dist/OfficialComponent.d.ts +50 -0
  69. package/dist/OfficialComponent.d.ts.map +1 -0
  70. package/dist/OfficialComponent.js +70 -0
  71. package/dist/OfficialComponent.js.map +1 -0
  72. package/dist/OrderedQuery.d.ts +4 -4
  73. package/dist/OrderedQuery.d.ts.map +1 -1
  74. package/dist/OrderedQuery.js.map +1 -1
  75. package/dist/QueryCtx.d.ts +1 -1
  76. package/dist/QueryCtx.d.ts.map +1 -1
  77. package/dist/QueryCtx.js.map +1 -1
  78. package/dist/QueryInitializer.d.ts +10 -10
  79. package/dist/QueryInitializer.d.ts.map +1 -1
  80. package/dist/QueryInitializer.js.map +1 -1
  81. package/dist/QueryRunner.d.ts +2 -2
  82. package/dist/QueryRunner.d.ts.map +1 -1
  83. package/dist/QueryRunner.js.map +1 -1
  84. package/dist/QueryStream.d.ts +11 -11
  85. package/dist/QueryStream.d.ts.map +1 -1
  86. package/dist/QueryStream.js.map +1 -1
  87. package/dist/QueryStreamCursor.d.ts +2 -2
  88. package/dist/QueryStreamCursor.d.ts.map +1 -1
  89. package/dist/QueryStreamCursor.js.map +1 -1
  90. package/dist/QueryStreamIndexPrefix.d.ts +2 -2
  91. package/dist/QueryStreamIndexPrefix.d.ts.map +1 -1
  92. package/dist/QueryStreamIndexPrefix.js.map +1 -1
  93. package/dist/QueryStreamIndexRange.d.ts +4 -4
  94. package/dist/QueryStreamIndexRange.d.ts.map +1 -1
  95. package/dist/QueryStreamIndexRange.js.map +1 -1
  96. package/dist/QueryStreamKey.d.ts +2 -2
  97. package/dist/QueryStreamKey.d.ts.map +1 -1
  98. package/dist/QueryStreamKey.js.map +1 -1
  99. package/dist/QueryStreamKeyBounds.d.ts +3 -3
  100. package/dist/QueryStreamKeyBounds.d.ts.map +1 -1
  101. package/dist/QueryStreamKeyBounds.js.map +1 -1
  102. package/dist/QueryStreamKeyLayout.d.ts +1 -1
  103. package/dist/QueryStreamKeyLayout.d.ts.map +1 -1
  104. package/dist/QueryStreamKeyLayout.js.map +1 -1
  105. package/dist/QueryStreamKeyValues.d.ts +1 -1
  106. package/dist/QueryStreamKeyValues.d.ts.map +1 -1
  107. package/dist/QueryStreamKeyValues.js.map +1 -1
  108. package/dist/QueryStreamPagination.d.ts +1 -1
  109. package/dist/QueryStreamPagination.d.ts.map +1 -1
  110. package/dist/QueryStreamPagination.js.map +1 -1
  111. package/dist/RegisteredConvexFunction.d.ts +20 -20
  112. package/dist/RegisteredConvexFunction.d.ts.map +1 -1
  113. package/dist/RegisteredConvexFunction.js.map +1 -1
  114. package/dist/RegisteredFunction.d.ts +26 -26
  115. package/dist/RegisteredFunction.d.ts.map +1 -1
  116. package/dist/RegisteredFunction.js.map +1 -1
  117. package/dist/RegisteredFunctions.d.ts +3 -3
  118. package/dist/RegisteredFunctions.d.ts.map +1 -1
  119. package/dist/RegisteredFunctions.js.map +1 -1
  120. package/dist/RegisteredNodeFunction.d.ts +6 -6
  121. package/dist/RegisteredNodeFunction.d.ts.map +1 -1
  122. package/dist/RegisteredNodeFunction.js.map +1 -1
  123. package/dist/Registry.d.ts +1 -1
  124. package/dist/Registry.d.ts.map +1 -1
  125. package/dist/Registry.js.map +1 -1
  126. package/dist/RegistryItems.d.ts +7 -0
  127. package/dist/RegistryItems.d.ts.map +1 -1
  128. package/dist/RegistryItems.js +7 -2
  129. package/dist/RegistryItems.js.map +1 -1
  130. package/dist/ResolvedMiddleware.d.ts +2 -2
  131. package/dist/ResolvedMiddleware.d.ts.map +1 -1
  132. package/dist/ResolvedMiddleware.js.map +1 -1
  133. package/dist/Storage.d.ts +6 -6
  134. package/dist/Storage.d.ts.map +1 -1
  135. package/dist/Storage.js.map +1 -1
  136. package/dist/StorageActionWriter.d.ts +1 -1
  137. package/dist/StorageActionWriter.d.ts.map +1 -1
  138. package/dist/StorageActionWriter.js.map +1 -1
  139. package/dist/StorageReader.d.ts +1 -1
  140. package/dist/StorageReader.d.ts.map +1 -1
  141. package/dist/StorageReader.js.map +1 -1
  142. package/dist/StorageWriter.d.ts +1 -1
  143. package/dist/StorageWriter.d.ts.map +1 -1
  144. package/dist/StorageWriter.js.map +1 -1
  145. package/dist/TableInfo.d.ts +2 -2
  146. package/dist/TableInfo.d.ts.map +1 -1
  147. package/dist/TableInfo.js.map +1 -1
  148. package/dist/VectorSearch.d.ts +1 -1
  149. package/dist/VectorSearch.d.ts.map +1 -1
  150. package/dist/VectorSearch.js.map +1 -1
  151. package/dist/index.d.ts +61 -60
  152. package/dist/index.d.ts.map +1 -1
  153. package/dist/index.js +2 -1
  154. package/dist/internal/AiGatewayDecisionClient.d.ts +1 -1
  155. package/dist/internal/AiGatewayDecisionClient.d.ts.map +1 -1
  156. package/dist/internal/AiGatewayDecisionClient.js.map +1 -1
  157. package/dist/internal/AiGatewayLanguageClient.d.ts +1 -1
  158. package/dist/internal/AiGatewayLanguageClient.d.ts.map +1 -1
  159. package/dist/internal/AiGatewayLanguageClient.js.map +1 -1
  160. package/dist/internal/DocumentPatch.d.ts +16 -0
  161. package/dist/internal/DocumentPatch.d.ts.map +1 -0
  162. package/dist/internal/DocumentPatch.js +36 -0
  163. package/dist/internal/DocumentPatch.js.map +1 -0
  164. package/dist/node.d.ts +1 -1
  165. package/dist/node.d.ts.map +1 -1
  166. package/package.json +2 -2
  167. package/src/ActionCtx.ts +1 -1
  168. package/src/AiGatewayDecisionClient.ts +3 -3
  169. package/src/AiGatewayLanguageClient.ts +3 -3
  170. package/src/Auth.ts +1 -1
  171. package/src/ComponentCtx.ts +1 -1
  172. package/src/ConvexFunctionDefinitions.ts +8 -8
  173. package/src/CronJobs.ts +1 -1
  174. package/src/DataModel.ts +3 -3
  175. package/src/DatabaseReader.ts +4 -4
  176. package/src/DatabaseSchema.ts +1 -1
  177. package/src/DatabaseWriter.ts +100 -27
  178. package/src/Document.ts +4 -4
  179. package/src/FunctionImpl.ts +5 -5
  180. package/src/FunctionRegistryItem.ts +1 -1
  181. package/src/GroupImpl.ts +66 -13
  182. package/src/GroupRegistry.ts +4 -4
  183. package/src/Handler.ts +23 -23
  184. package/src/HttpRouter.ts +17 -17
  185. package/src/MiddlewareImpl.ts +17 -17
  186. package/src/MutationCtx.ts +1 -1
  187. package/src/MutationRunner.ts +1 -1
  188. package/src/MutationTransactionContext.ts +2 -2
  189. package/src/OfficialComponent.ts +151 -0
  190. package/src/OrderedQuery.ts +4 -4
  191. package/src/QueryCtx.ts +1 -1
  192. package/src/QueryInitializer.ts +9 -9
  193. package/src/QueryRunner.ts +2 -2
  194. package/src/QueryStream.ts +15 -15
  195. package/src/QueryStreamCursor.ts +3 -3
  196. package/src/QueryStreamIndexPrefix.ts +2 -2
  197. package/src/QueryStreamIndexRange.ts +4 -4
  198. package/src/QueryStreamKey.ts +2 -2
  199. package/src/QueryStreamKeyBounds.ts +3 -3
  200. package/src/QueryStreamKeyLayout.ts +1 -1
  201. package/src/QueryStreamKeyValues.ts +1 -1
  202. package/src/QueryStreamPagination.ts +2 -2
  203. package/src/RegisteredConvexFunction.ts +21 -21
  204. package/src/RegisteredFunction.ts +18 -18
  205. package/src/RegisteredFunctions.ts +4 -4
  206. package/src/RegisteredNodeFunction.ts +8 -8
  207. package/src/Registry.ts +1 -1
  208. package/src/RegistryItems.ts +33 -2
  209. package/src/ResolvedMiddleware.ts +2 -2
  210. package/src/Storage.ts +3 -3
  211. package/src/StorageActionWriter.ts +1 -1
  212. package/src/StorageReader.ts +1 -1
  213. package/src/StorageWriter.ts +1 -1
  214. package/src/TableInfo.ts +2 -2
  215. package/src/VectorSearch.ts +1 -1
  216. package/src/index.ts +61 -60
  217. package/src/internal/AiGatewayDecisionClient.ts +2 -2
  218. package/src/internal/AiGatewayLanguageClient.ts +2 -2
  219. package/src/internal/DocumentPatch.ts +87 -0
  220. package/src/node.ts +1 -1
package/src/HttpRouter.ts CHANGED
@@ -25,23 +25,23 @@ import type * as Etag from "effect/http/Etag";
25
25
  import type * as HttpPlatform from "effect/http/HttpPlatform";
26
26
  import * as HttpRouter from "effect/http/HttpRouter";
27
27
  import * as HttpServer from "effect/http/HttpServer";
28
- import type * as ActionRunner from "./ActionRunner";
29
- import type * as Auth from "./Auth";
30
- import type { ExecutionMetadata } from "./ExecutionMetadata";
31
- import type { RequestMetadata } from "./RequestMetadata";
32
- import type * as DatabaseSchema from "./DatabaseSchema";
33
- import type * as DataModel from "./DataModel";
34
- import type * as Handler from "./Handler";
35
- import * as ConvexConfigProvider from "./ConvexConfigProvider";
36
- import * as ConvexLogger from "./ConvexLogger";
37
- import type * as MutationRunner from "./MutationRunner";
38
- import type * as QueryRunner from "./QueryRunner";
39
- import * as RegisteredFunction from "./RegisteredFunction";
40
- import type * as Scheduler from "./Scheduler";
41
- import type { Storage } from "./Storage";
42
- import type { StorageActionWriter } from "./StorageActionWriter";
43
- import type { StorageReader } from "./StorageReader";
44
- import type { StorageWriter } from "./StorageWriter";
28
+ import type * as ActionRunner from "./ActionRunner.js";
29
+ import type * as Auth from "./Auth.js";
30
+ import type { ExecutionMetadata } from "./ExecutionMetadata.js";
31
+ import type { RequestMetadata } from "./RequestMetadata.js";
32
+ import type * as DatabaseSchema from "./DatabaseSchema.js";
33
+ import type * as DataModel from "./DataModel.js";
34
+ import type * as Handler from "./Handler.js";
35
+ import * as ConvexConfigProvider from "./ConvexConfigProvider.js";
36
+ import * as ConvexLogger from "./ConvexLogger.js";
37
+ import type * as MutationRunner from "./MutationRunner.js";
38
+ import type * as QueryRunner from "./QueryRunner.js";
39
+ import * as RegisteredFunction from "./RegisteredFunction.js";
40
+ import type * as Scheduler from "./Scheduler.js";
41
+ import type { Storage } from "./Storage.js";
42
+ import type { StorageActionWriter } from "./StorageActionWriter.js";
43
+ import type { StorageReader } from "./StorageReader.js";
44
+ import type { StorageWriter } from "./StorageWriter.js";
45
45
 
46
46
  /**
47
47
  * The Confect services available to HTTP route handlers and middleware,
@@ -1,28 +1,28 @@
1
1
  import type * as FunctionSpec from "@confect/core/FunctionSpec";
2
2
  import type * as GroupSpec from "@confect/core/GroupSpec";
3
3
  import * as MiddlewareSpec from "@confect/core/MiddlewareSpec";
4
- import * as Registry from "./Registry";
4
+ import * as Registry from "./Registry.js";
5
5
  import type { FunctionType } from "convex/server";
6
6
  import * as Context from "effect/Context";
7
7
  import * as Effect from "effect/Effect";
8
8
  import * as Layer from "effect/Layer";
9
9
  import * as Ref from "effect/Ref";
10
- import type * as Auth from "./Auth";
11
- import type * as DatabaseReader from "./DatabaseReader";
12
- import type * as DatabaseSchema from "./DatabaseSchema";
13
- import type * as Handler from "./Handler";
14
- import type { ExecutionMetadata } from "./ExecutionMetadata";
15
- import type { RequestMetadata } from "./RequestMetadata";
16
- import type { TransactionMetadata } from "./TransactionMetadata";
17
- import type * as MutationRunner from "./MutationRunner";
18
- import type * as QueryRunner from "./QueryRunner";
19
- import type { QueryTransactionContext } from "./QueryTransactionContext";
20
- import type * as Scheduler from "./Scheduler";
21
- import type { Storage } from "./Storage";
22
- import type * as StorageReader from "./StorageReader";
23
- import type * as StorageWriter from "./StorageWriter";
24
- import * as MiddlewareRegistryItem from "./MiddlewareRegistryItem";
25
- import { setNestedProperty } from "./internal/utils";
10
+ import type * as Auth from "./Auth.js";
11
+ import type * as DatabaseReader from "./DatabaseReader.js";
12
+ import type * as DatabaseSchema from "./DatabaseSchema.js";
13
+ import type * as Handler from "./Handler.js";
14
+ import type { ExecutionMetadata } from "./ExecutionMetadata.js";
15
+ import type { RequestMetadata } from "./RequestMetadata.js";
16
+ import type { TransactionMetadata } from "./TransactionMetadata.js";
17
+ import type * as MutationRunner from "./MutationRunner.js";
18
+ import type * as QueryRunner from "./QueryRunner.js";
19
+ import type { QueryTransactionContext } from "./QueryTransactionContext.js";
20
+ import type * as Scheduler from "./Scheduler.js";
21
+ import type { Storage } from "./Storage.js";
22
+ import type * as StorageReader from "./StorageReader.js";
23
+ import type * as StorageWriter from "./StorageWriter.js";
24
+ import * as MiddlewareRegistryItem from "./MiddlewareRegistryItem.js";
25
+ import { setNestedProperty } from "./internal/utils.js";
26
26
 
27
27
  /**
28
28
  * Marker service produced by providing a middleware's implementation to a
@@ -1,7 +1,7 @@
1
1
  import type * as IdScope from "@confect/core/IdScope";
2
2
  import type { GenericDataModel, GenericMutationCtx } from "convex/server";
3
3
  import * as Context from "effect/Context";
4
- import type * as ComponentCtx from "./ComponentCtx";
4
+ import type * as ComponentCtx from "./ComponentCtx.js";
5
5
  import * as Layer from "effect/Layer";
6
6
 
7
7
  export type MutationCtxTag<
@@ -4,7 +4,7 @@ import * as Context from "effect/Context";
4
4
  import * as Effect from "effect/Effect";
5
5
  import * as Layer from "effect/Layer";
6
6
  import type * as Schema from "effect/Schema";
7
- import * as MutationTransactionContext from "./MutationTransactionContext";
7
+ import * as MutationTransactionContext from "./MutationTransactionContext.js";
8
8
 
9
9
  export type Options = MutationTransactionContext.MutationOptions;
10
10
 
@@ -7,10 +7,10 @@ import type {
7
7
  import * as Context from "effect/Context";
8
8
  import * as Effect from "effect/Effect";
9
9
  import * as Layer from "effect/Layer";
10
- import type { Options as MutationOptions } from "./QueryTransactionContext";
10
+ import type { Options as MutationOptions } from "./QueryTransactionContext.js";
11
11
 
12
12
  export type { TransactionLimits } from "convex/server";
13
- export type { Options as MutationOptions } from "./QueryTransactionContext";
13
+ export type { Options as MutationOptions } from "./QueryTransactionContext.js";
14
14
  export type QueryOptions = AdvancedRunQueryOptions;
15
15
 
16
16
  const make = (
@@ -0,0 +1,151 @@
1
+ import * as Ref from "@confect/core/Ref";
2
+ import type {
3
+ DefaultFunctionArgs,
4
+ GenericActionCtx,
5
+ GenericDataModel,
6
+ GenericMutationCtx,
7
+ GenericQueryCtx,
8
+ } from "convex/server";
9
+ import * as Effect from "effect/Effect";
10
+ import * as Option from "effect/Option";
11
+ import * as Schema from "effect/Schema";
12
+ import * as ActionCtx from "./ActionCtx.js";
13
+ import type * as ActionRunner from "./ActionRunner.js";
14
+ import * as MutationCtx from "./MutationCtx.js";
15
+ import type * as MutationRunner from "./MutationRunner.js";
16
+ import * as QueryCtx from "./QueryCtx.js";
17
+ import type * as QueryRunner from "./QueryRunner.js";
18
+
19
+ /**
20
+ * An official component's method rejected. `cause` is the rejection as thrown.
21
+ */
22
+ export class ComponentCallFailed extends Schema.TaggedError<ComponentCallFailed>()(
23
+ "ComponentCallFailed",
24
+ { component: Schema.String, method: Schema.String, cause: Schema.Defect() },
25
+ ) {}
26
+
27
+ declare const unsupported: unique symbol;
28
+ type Unsupported = typeof unsupported;
29
+ type Needs<Param> = [GenericActionCtx<GenericDataModel>] extends [Param]
30
+ ? [GenericMutationCtx<GenericDataModel>] extends [Param]
31
+ ? [GenericQueryCtx<GenericDataModel>] extends [Param]
32
+ ? QueryRunner.QueryRunner
33
+ : MutationRunner.MutationRunner
34
+ : [GenericQueryCtx<GenericDataModel>] extends [Param]
35
+ ? Unsupported
36
+ : ActionRunner.ActionRunner
37
+ : Unsupported;
38
+
39
+ type Method<Official> = {
40
+ [K in keyof Official & string]: Official[K] extends (
41
+ ctx: infer Ctx,
42
+ ...args: infer _Args
43
+ ) => Promise<unknown>
44
+ ? Needs<Ctx> extends Unsupported
45
+ ? never
46
+ : K
47
+ : never;
48
+ }[keyof Official & string];
49
+
50
+ type Call<F> = F extends (
51
+ ctx: infer Ctx,
52
+ ...args: infer Args
53
+ ) => Promise<infer A>
54
+ ? (...args: Args) => Effect.Effect<A, never, Needs<Ctx>>
55
+ : never;
56
+
57
+ type Lifted<Official> = <M extends Method<Official>>(
58
+ method: M,
59
+ ...args: Parameters<Call<Official[M]>>
60
+ ) => ReturnType<Call<Official[M]>>;
61
+
62
+ /**
63
+ * Lift official promise methods, deriving each capability from its ctx
64
+ * parameter. A rejection is caller misuse, a limit or a platform fault rather
65
+ * than a domain fact, so it dies.
66
+ */
67
+ export const make = <Official extends object>(
68
+ component: string,
69
+ official: Official,
70
+ ): Lifted<Official> => {
71
+ const context = Effect.gen(function* () {
72
+ const action = yield* Effect.serviceOption(
73
+ ActionCtx.ActionCtx<GenericDataModel>(),
74
+ );
75
+ if (Option.isSome(action)) return action.value;
76
+ const mutation = yield* Effect.serviceOption(
77
+ MutationCtx.MutationCtx<GenericDataModel>(),
78
+ );
79
+ if (Option.isSome(mutation)) return mutation.value;
80
+ const query = yield* Effect.serviceOption(
81
+ QueryCtx.QueryCtx<GenericDataModel>(),
82
+ );
83
+ if (Option.isSome(query)) return query.value;
84
+ return yield* Effect.die(
85
+ new Error(`${component} called outside a Confect handler`),
86
+ );
87
+ });
88
+ const call = Effect.fn(`${component}.call`)(function* (
89
+ method: Method<Official>,
90
+ ...args: unknown[]
91
+ ) {
92
+ const ctx = yield* context;
93
+ // Method selects promise methods whose first argument accepts a native handler context.
94
+ const invoke = official[method] as (
95
+ native: typeof ctx,
96
+ ...args: unknown[]
97
+ ) => Promise<unknown>;
98
+ return yield* Effect.tryPromise({
99
+ try: () => invoke.call(official, ctx, ...args),
100
+ catch: (cause) => ComponentCallFailed.make({ component, method, cause }),
101
+ }).pipe(Effect.orDie);
102
+ });
103
+ // Confect installs the native ctx with the runner capability inferred by Needs.
104
+ return call as unknown as Lifted<Official>;
105
+ };
106
+
107
+ /**
108
+ * A function reference with its encoded arguments, ready for an official method
109
+ * that takes both.
110
+ */
111
+ export interface Fn<R extends Ref.Any> {
112
+ readonly reference: Ref.FunctionReference<R>;
113
+ readonly args: DefaultFunctionArgs;
114
+ }
115
+
116
+ /**
117
+ * Encode a ref's arguments through its codecs to the wire record an official
118
+ * method expects.
119
+ */
120
+ export const encodeCall = <R extends Ref.Any>(
121
+ ref: R,
122
+ args: NoInfer<Ref.Args<R>>,
123
+ ): Effect.Effect<Fn<R>> =>
124
+ Ref.encodeArgs(ref, args).pipe(
125
+ Effect.flatMap(
126
+ Schema.decodeUnknownEffect(Schema.Record(Schema.String, Schema.Unknown)),
127
+ ),
128
+ Effect.map((encoded) => ({
129
+ reference: Ref.getFunctionReference(ref),
130
+ args: encoded,
131
+ })),
132
+ Effect.orDie,
133
+ );
134
+
135
+ /**
136
+ * Encode a callback's real field without fabricating the rest of its arguments.
137
+ */
138
+ export const encodeField = <
139
+ R extends Ref.AnyConfect,
140
+ K extends keyof Ref.Args<R> & keyof Ref.ArgsFields<R>,
141
+ >(
142
+ ref: R,
143
+ key: K,
144
+ value: NoInfer<Ref.Args<R>[K]>,
145
+ ): Effect.Effect<unknown> => {
146
+ const fields = ref.args.fields as Record<
147
+ keyof Ref.ArgsFields<R>,
148
+ Schema.Codec<unknown, unknown>
149
+ >;
150
+ return Schema.encodeUnknownEffect(fields[key])(value).pipe(Effect.orDie);
151
+ };
@@ -10,10 +10,10 @@ import { identity, pipe } from "effect/Function";
10
10
  import type { Option } from "effect";
11
11
  import * as Effect from "effect/Effect";
12
12
  import * as Stream from "effect/Stream";
13
- import type * as DatabaseSchema from "./DatabaseSchema";
14
- import * as Document from "./Document";
15
- import type * as TableInfo from "./TableInfo";
16
- import type * as Table from "./Table";
13
+ import type * as DatabaseSchema from "./DatabaseSchema.js";
14
+ import * as Document from "./Document.js";
15
+ import type * as TableInfo from "./TableInfo.js";
16
+ import type * as Table from "./Table.js";
17
17
 
18
18
  type NativePaginate<TableInfo_ extends TableInfo.AnyWithProps, Doc> = (
19
19
  options: PaginationOptions,
package/src/QueryCtx.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import type * as IdScope from "@confect/core/IdScope";
2
2
  import type { GenericDataModel, GenericQueryCtx } from "convex/server";
3
3
  import * as Context from "effect/Context";
4
- import type * as ComponentCtx from "./ComponentCtx";
4
+ import type * as ComponentCtx from "./ComponentCtx.js";
5
5
  import * as Layer from "effect/Layer";
6
6
 
7
7
  export type QueryCtxTag<
@@ -28,15 +28,15 @@ import type {
28
28
  BaseDatabaseReader,
29
29
  IndexFieldTypesForEq,
30
30
  } from "@confect/core/Types";
31
- import type * as DataModel from "./DataModel";
32
- import type * as DatabaseSchema from "./DatabaseSchema";
33
- import * as Document from "./Document";
34
- import * as OrderedQuery from "./OrderedQuery";
35
- import * as QueryStream from "./QueryStream";
36
- import type * as QueryStreamKeyLabels from "./QueryStreamKeyLabels";
37
- import * as QueryStreamIndexRange from "./QueryStreamIndexRange";
38
- import type { QueryStreamOrderDirection as OrderDirection } from "./QueryStreamOrderDirection";
39
- import type * as Table from "./Table";
31
+ import type * as DataModel from "./DataModel.js";
32
+ import type * as DatabaseSchema from "./DatabaseSchema.js";
33
+ import * as Document from "./Document.js";
34
+ import * as OrderedQuery from "./OrderedQuery.js";
35
+ import * as QueryStream from "./QueryStream.js";
36
+ import type * as QueryStreamKeyLabels from "./QueryStreamKeyLabels.js";
37
+ import * as QueryStreamIndexRange from "./QueryStreamIndexRange.js";
38
+ import type { QueryStreamOrderDirection as OrderDirection } from "./QueryStreamOrderDirection.js";
39
+ import type * as Table from "./Table.js";
40
40
 
41
41
  type ConvexTableInfoFor<
42
42
  DataModel_ extends DataModel.AnyWithProps,
@@ -4,8 +4,8 @@ import * as Context from "effect/Context";
4
4
  import * as Effect from "effect/Effect";
5
5
  import * as Layer from "effect/Layer";
6
6
  import type * as Schema from "effect/Schema";
7
- import * as MutationTransactionContext from "./MutationTransactionContext";
8
- import * as QueryTransactionContext from "./QueryTransactionContext";
7
+ import * as MutationTransactionContext from "./MutationTransactionContext.js";
8
+ import * as QueryTransactionContext from "./QueryTransactionContext.js";
9
9
 
10
10
  export type Options = MutationTransactionContext.QueryOptions;
11
11
 
@@ -55,19 +55,19 @@ import * as String from "effect/String";
55
55
  import * as Result from "effect/Result";
56
56
  import * as Tuple from "effect/Tuple";
57
57
  import type * as Types from "effect/Types";
58
- import * as Document from "./Document";
59
- import type * as Table from "./Table";
60
- import * as QueryStreamCursor from "./QueryStreamCursor";
61
- import * as QueryStreamKeyLabels from "./QueryStreamKeyLabels";
62
- import * as QueryStreamKeyLayout from "./QueryStreamKeyLayout";
63
- import * as QueryStreamOrderDirection from "./QueryStreamOrderDirection";
64
- import * as QueryStreamKeyValues from "./QueryStreamKeyValues";
65
- import * as QueryStreamIndexPrefix from "./QueryStreamIndexPrefix";
66
- import * as QueryStreamKey from "./QueryStreamKey";
67
- import * as QueryStreamKeyBounds from "./QueryStreamKeyBounds";
68
- import * as QueryStreamIndexRange from "./QueryStreamIndexRange";
69
- import * as QueryStreamPagination from "./QueryStreamPagination";
70
- import * as QueryStreamReadBudget from "./QueryStreamReadBudget";
58
+ import * as Document from "./Document.js";
59
+ import type * as Table from "./Table.js";
60
+ import * as QueryStreamCursor from "./QueryStreamCursor.js";
61
+ import * as QueryStreamKeyLabels from "./QueryStreamKeyLabels.js";
62
+ import * as QueryStreamKeyLayout from "./QueryStreamKeyLayout.js";
63
+ import * as QueryStreamOrderDirection from "./QueryStreamOrderDirection.js";
64
+ import * as QueryStreamKeyValues from "./QueryStreamKeyValues.js";
65
+ import * as QueryStreamIndexPrefix from "./QueryStreamIndexPrefix.js";
66
+ import * as QueryStreamKey from "./QueryStreamKey.js";
67
+ import * as QueryStreamKeyBounds from "./QueryStreamKeyBounds.js";
68
+ import * as QueryStreamIndexRange from "./QueryStreamIndexRange.js";
69
+ import * as QueryStreamPagination from "./QueryStreamPagination.js";
70
+ import * as QueryStreamReadBudget from "./QueryStreamReadBudget.js";
71
71
 
72
72
  /**
73
73
  * A page exhausted its read budget without a safe logical continuation.
@@ -165,14 +165,14 @@ export class MissingReversalRecipeError extends Data.TaggedError(
165
165
  export {
166
166
  EmptyInitialPageError,
167
167
  InvalidPageSizeError,
168
- } from "./QueryStreamPagination";
168
+ } from "./QueryStreamPagination.js";
169
169
 
170
170
  /**
171
171
  * Invalid numeric read limits.
172
172
  *
173
173
  * @experimental
174
174
  */
175
- export { InvalidReadLimitError } from "./QueryStreamReadBudget";
175
+ export { InvalidReadLimitError } from "./QueryStreamReadBudget.js";
176
176
 
177
177
  /**
178
178
  * Runtime identifier used to distinguish query streams from plain streams.
@@ -1,12 +1,12 @@
1
1
  import * as Array from "effect/Array";
2
2
  import * as Effect from "effect/Effect";
3
- import * as QueryStreamKey from "./QueryStreamKey";
3
+ import * as QueryStreamKey from "./QueryStreamKey.js";
4
4
  import * as SchemaIssue from "effect/SchemaIssue";
5
5
  import * as Match from "effect/Match";
6
6
  import * as Schema from "effect/Schema";
7
7
  import * as SchemaGetter from "effect/SchemaGetter";
8
- import * as QueryStreamKeyLayout from "./QueryStreamKeyLayout";
9
- import * as QueryStreamKeyValues from "./QueryStreamKeyValues";
8
+ import * as QueryStreamKeyLayout from "./QueryStreamKeyLayout.js";
9
+ import * as QueryStreamKeyValues from "./QueryStreamKeyValues.js";
10
10
 
11
11
  // Serialized labels are a cursor boundary representation. They include every
12
12
  // runtime position but do not preserve implicitness.
@@ -1,8 +1,8 @@
1
1
  import * as Array from "effect/Array";
2
2
  import * as Data from "effect/Data";
3
3
  import * as Result from "effect/Result";
4
- import type * as QueryStreamKey from "./QueryStreamKey";
5
- import type * as QueryStreamKeyValues from "./QueryStreamKeyValues";
4
+ import type * as QueryStreamKey from "./QueryStreamKey.js";
5
+ import type * as QueryStreamKeyValues from "./QueryStreamKeyValues.js";
6
6
 
7
7
  const TypeId = "~@confect/server/QueryStreamIndexPrefix";
8
8
 
@@ -11,10 +11,10 @@ import * as Match from "effect/Match";
11
11
  import * as Option from "effect/Option";
12
12
  import * as Result from "effect/Result";
13
13
  import type * as Types from "effect/Types";
14
- import * as QueryStreamIndexPrefix from "./QueryStreamIndexPrefix";
15
- import * as QueryStreamKeyBounds from "./QueryStreamKeyBounds";
16
- import * as QueryStreamKeyValues from "./QueryStreamKeyValues";
17
- import type * as QueryStreamOrderDirection from "./QueryStreamOrderDirection";
14
+ import * as QueryStreamIndexPrefix from "./QueryStreamIndexPrefix.js";
15
+ import * as QueryStreamKeyBounds from "./QueryStreamKeyBounds.js";
16
+ import * as QueryStreamKeyValues from "./QueryStreamKeyValues.js";
17
+ import type * as QueryStreamOrderDirection from "./QueryStreamOrderDirection.js";
18
18
 
19
19
  type Head<FieldPaths extends ReadonlyArray<string>> =
20
20
  FieldPaths extends readonly [infer H extends string, ...ReadonlyArray<string>]
@@ -1,8 +1,8 @@
1
1
  import * as Data from "effect/Data";
2
2
  import * as Predicate from "effect/Predicate";
3
3
  import * as Result from "effect/Result";
4
- import * as QueryStreamKeyLayout from "./QueryStreamKeyLayout";
5
- import type * as QueryStreamKeyValues from "./QueryStreamKeyValues";
4
+ import * as QueryStreamKeyLayout from "./QueryStreamKeyLayout.js";
5
+ import type * as QueryStreamKeyValues from "./QueryStreamKeyValues.js";
6
6
 
7
7
  const TypeId = "~@confect/server/QueryStreamKey";
8
8
 
@@ -3,9 +3,9 @@ import * as Data from "effect/Data";
3
3
  import * as Option from "effect/Option";
4
4
  import * as Order from "effect/Order";
5
5
  import * as Result from "effect/Result";
6
- import * as QueryStreamKey from "./QueryStreamKey";
7
- import * as QueryStreamKeyLayout from "./QueryStreamKeyLayout";
8
- import * as QueryStreamKeyValues from "./QueryStreamKeyValues";
6
+ import * as QueryStreamKey from "./QueryStreamKey.js";
7
+ import * as QueryStreamKeyLayout from "./QueryStreamKeyLayout.js";
8
+ import * as QueryStreamKeyValues from "./QueryStreamKeyValues.js";
9
9
 
10
10
  // A bound's key may be a *prefix* of the full key: bounding by `["a"]` means
11
11
  // bounding by the whole family of keys that start with `"a"`. To compare
@@ -6,7 +6,7 @@ import * as Option from "effect/Option";
6
6
  import * as Result from "effect/Result";
7
7
  import type * as Types from "effect/Types";
8
8
 
9
- import * as QueryStreamKeyLabels from "./QueryStreamKeyLabels";
9
+ import * as QueryStreamKeyLabels from "./QueryStreamKeyLabels.js";
10
10
 
11
11
  /**
12
12
  * One runtime position of a stream key. Explicit IDs and their aliases are
@@ -12,7 +12,7 @@ import * as Result from "effect/Result";
12
12
  import * as Schema from "effect/Schema";
13
13
  import * as SchemaGetter from "effect/SchemaGetter";
14
14
  import * as SchemaIssue from "effect/SchemaIssue";
15
- import type * as QueryStreamOrderDirection from "./QueryStreamOrderDirection";
15
+ import type * as QueryStreamOrderDirection from "./QueryStreamOrderDirection.js";
16
16
 
17
17
  const UNDEFINED_SENTINEL = { $undefined: true } as const;
18
18
  const KeyValue = Schema.Json.pipe(
@@ -4,8 +4,8 @@ import * as Match from "effect/Match";
4
4
  import * as Option from "effect/Option";
5
5
  import * as Result from "effect/Result";
6
6
  import * as Schema from "effect/Schema";
7
- import type * as QueryStreamKey from "./QueryStreamKey";
8
- import * as QueryStreamKeyValues from "./QueryStreamKeyValues";
7
+ import type * as QueryStreamKey from "./QueryStreamKey.js";
8
+ import * as QueryStreamKeyValues from "./QueryStreamKeyValues.js";
9
9
 
10
10
  const PageSize = Schema.Natural.pipe(
11
11
  Schema.brand("~@confect/server/QueryStreamPagination/PageSize"),
@@ -24,27 +24,27 @@ import * as Layer from "effect/Layer";
24
24
  import * as Match from "effect/Match";
25
25
  import * as Schema from "effect/Schema";
26
26
  import * as EffectScheduler from "effect/Scheduler";
27
- import * as Auth from "./Auth";
28
- import * as ConvexConfigProvider from "./ConvexConfigProvider";
29
- import * as DatabaseReader from "./DatabaseReader";
30
- import type * as DatabaseSchema from "./DatabaseSchema";
31
- import * as DatabaseWriter from "./DatabaseWriter";
32
- import type * as DataModel from "./DataModel";
33
- import * as ExecutionMetadata from "./ExecutionMetadata";
34
- import * as RequestMetadata from "./RequestMetadata";
35
- import * as TransactionMetadata from "./TransactionMetadata";
36
- import * as MutationCtx from "./MutationCtx";
37
- import * as MutationRunner from "./MutationRunner";
38
- import * as MutationTransactionContext from "./MutationTransactionContext";
39
- import * as QueryCtx from "./QueryCtx";
40
- import * as QueryRunner from "./QueryRunner";
41
- import * as QueryTransactionContext from "./QueryTransactionContext";
42
- import * as RegisteredFunction from "./RegisteredFunction";
43
- import type * as FunctionRegistryItem from "./FunctionRegistryItem";
44
- import type * as ResolvedMiddleware from "./ResolvedMiddleware";
45
- import * as Scheduler from "./Scheduler";
46
- import { StorageWriter } from "./StorageWriter";
47
- import type * as Handler from "./Handler";
27
+ import * as Auth from "./Auth.js";
28
+ import * as ConvexConfigProvider from "./ConvexConfigProvider.js";
29
+ import * as DatabaseReader from "./DatabaseReader.js";
30
+ import type * as DatabaseSchema from "./DatabaseSchema.js";
31
+ import * as DatabaseWriter from "./DatabaseWriter.js";
32
+ import type * as DataModel from "./DataModel.js";
33
+ import * as ExecutionMetadata from "./ExecutionMetadata.js";
34
+ import * as RequestMetadata from "./RequestMetadata.js";
35
+ import * as TransactionMetadata from "./TransactionMetadata.js";
36
+ import * as MutationCtx from "./MutationCtx.js";
37
+ import * as MutationRunner from "./MutationRunner.js";
38
+ import * as MutationTransactionContext from "./MutationTransactionContext.js";
39
+ import * as QueryCtx from "./QueryCtx.js";
40
+ import * as QueryRunner from "./QueryRunner.js";
41
+ import * as QueryTransactionContext from "./QueryTransactionContext.js";
42
+ import * as RegisteredFunction from "./RegisteredFunction.js";
43
+ import type * as FunctionRegistryItem from "./FunctionRegistryItem.js";
44
+ import type * as ResolvedMiddleware from "./ResolvedMiddleware.js";
45
+ import * as Scheduler from "./Scheduler.js";
46
+ import { StorageWriter } from "./StorageWriter.js";
47
+ import type * as Handler from "./Handler.js";
48
48
 
49
49
  export type Definition = Data.TaggedEnum<{
50
50
  PublicQuery: ReturnType<typeof queryFunction>;
@@ -25,24 +25,24 @@ import * as Result from "effect/Result";
25
25
  import * as Layer from "effect/Layer";
26
26
  import * as Schema from "effect/Schema";
27
27
  import type * as EffectScheduler from "effect/Scheduler";
28
- import * as ActionCtx from "./ActionCtx";
29
- import * as ActionRunner from "./ActionRunner";
30
- import * as Auth from "./Auth";
31
- import * as ConvexLogger from "./ConvexLogger";
32
- import type * as DatabaseSchema from "./DatabaseSchema";
33
- import type * as DataModel from "./DataModel";
34
- import * as ExecutionMetadata from "./ExecutionMetadata";
35
- import * as RequestMetadata from "./RequestMetadata";
36
- import * as MutationRunner from "./MutationRunner";
37
- import * as QueryRunner from "./QueryRunner";
38
- import type * as ResolvedMiddleware from "./ResolvedMiddleware";
39
- import * as Scheduler from "./Scheduler";
40
- import * as Storage from "./Storage";
41
- import * as StorageActionWriter from "./StorageActionWriter";
42
- import type * as StorageReader from "./StorageReader";
43
- import * as StorageWriter from "./StorageWriter";
44
- import * as VectorSearch from "./VectorSearch";
45
- import type * as Handler from "./Handler";
28
+ import * as ActionCtx from "./ActionCtx.js";
29
+ import * as ActionRunner from "./ActionRunner.js";
30
+ import * as Auth from "./Auth.js";
31
+ import * as ConvexLogger from "./ConvexLogger.js";
32
+ import type * as DatabaseSchema from "./DatabaseSchema.js";
33
+ import type * as DataModel from "./DataModel.js";
34
+ import * as ExecutionMetadata from "./ExecutionMetadata.js";
35
+ import * as RequestMetadata from "./RequestMetadata.js";
36
+ import * as MutationRunner from "./MutationRunner.js";
37
+ import * as QueryRunner from "./QueryRunner.js";
38
+ import type * as ResolvedMiddleware from "./ResolvedMiddleware.js";
39
+ import * as Scheduler from "./Scheduler.js";
40
+ import * as Storage from "./Storage.js";
41
+ import * as StorageActionWriter from "./StorageActionWriter.js";
42
+ import type * as StorageReader from "./StorageReader.js";
43
+ import * as StorageWriter from "./StorageWriter.js";
44
+ import * as VectorSearch from "./VectorSearch.js";
45
+ import type * as Handler from "./Handler.js";
46
46
 
47
47
  export type Any =
48
48
  | RegisteredQuery<FunctionVisibility, DefaultFunctionArgs, any>
@@ -1,11 +1,11 @@
1
- import * as ConvexFunctionDefinitions from "./ConvexFunctionDefinitions";
1
+ import * as ConvexFunctionDefinitions from "./ConvexFunctionDefinitions.js";
2
2
  import type * as FunctionSpec from "@confect/core/FunctionSpec";
3
3
  import type * as GroupSpec from "@confect/core/GroupSpec";
4
4
  import type * as Spec from "@confect/core/Spec";
5
5
  import type { Layer, Types } from "effect";
6
- import type * as DatabaseSchema from "./DatabaseSchema";
7
- import type * as GroupImpl from "./GroupImpl";
8
- import type * as RegisteredFunction from "./RegisteredFunction";
6
+ import type * as DatabaseSchema from "./DatabaseSchema.js";
7
+ import type * as GroupImpl from "./GroupImpl.js";
8
+ import type * as RegisteredFunction from "./RegisteredFunction.js";
9
9
 
10
10
  export type RegisteredFunctions<Spec_ extends Spec.AnyWithProps> =
11
11
  Types.Simplify<RegisteredFunctionsHelper<Spec.Groups<Spec_>>>;
@@ -9,15 +9,15 @@ import type { Effect } from "effect";
9
9
  import type { Schema } from "effect";
10
10
  import * as Layer from "effect/Layer";
11
11
  import * as Match from "effect/Match";
12
- import type * as DatabaseSchema from "./DatabaseSchema";
13
- import * as RegisteredFunction from "./RegisteredFunction";
14
- import * as FunctionRegistryItem from "./FunctionRegistryItem";
15
- import * as ResolvedMiddleware from "./ResolvedMiddleware";
16
- import * as GroupRegistry from "./GroupRegistry";
12
+ import type * as DatabaseSchema from "./DatabaseSchema.js";
13
+ import * as RegisteredFunction from "./RegisteredFunction.js";
14
+ import * as FunctionRegistryItem from "./FunctionRegistryItem.js";
15
+ import * as ResolvedMiddleware from "./ResolvedMiddleware.js";
16
+ import * as GroupRegistry from "./GroupRegistry.js";
17
17
  import type * as GroupSpec from "@confect/core/GroupSpec";
18
- import type * as GroupImpl from "./GroupImpl";
19
- import type * as RegisteredFunctions from "./RegisteredFunctions";
20
- import { mapLeaves } from "./internal/utils";
18
+ import type * as GroupImpl from "./GroupImpl.js";
19
+ import type * as RegisteredFunctions from "./RegisteredFunctions.js";
20
+ import { mapLeaves } from "./internal/utils.js";
21
21
 
22
22
  export const buildForGroup = <Group extends GroupSpec.AnyWithProps>(
23
23
  databaseSchema: DatabaseSchema.AnyWithProps,