@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/Registry.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as Context from "effect/Context";
2
2
  import * as Ref from "effect/Ref";
3
- import type { RegistryItems } from "./RegistryItems";
3
+ import type { RegistryItems } from "./RegistryItems.js";
4
4
 
5
5
  /**
6
6
  * Effect `Context.Reference` shared by everything that touches a group's
@@ -1,8 +1,8 @@
1
1
  import * as Array from "effect/Array";
2
2
  import { pipe } from "effect/Function";
3
3
  import * as Record from "effect/Record";
4
- import * as FunctionRegistryItem from "./FunctionRegistryItem";
5
- import * as MiddlewareRegistryItem from "./MiddlewareRegistryItem";
4
+ import * as FunctionRegistryItem from "./FunctionRegistryItem.js";
5
+ import * as MiddlewareRegistryItem from "./MiddlewareRegistryItem.js";
6
6
 
7
7
  /**
8
8
  * Runtime tree that mirrors a `Spec`'s group structure. Values remain unknown
@@ -38,3 +38,34 @@ export const middlewareKeys = (items: RegistryItems): ReadonlyArray<string> =>
38
38
  Array.filter(MiddlewareRegistryItem.isMiddlewareRegistryItem),
39
39
  Array.map((item) => item.middlewareSpec.key),
40
40
  );
41
+
42
+ export interface MissingMiddleware {
43
+ readonly functionName: string;
44
+ readonly middlewareKey: string;
45
+ }
46
+
47
+ export const missingRequired = (
48
+ items: RegistryItems,
49
+ required: ReadonlyArray<{ readonly key: string }>,
50
+ groupPath = "",
51
+ ): ReadonlyArray<MissingMiddleware> =>
52
+ Object.entries(items)
53
+ .sort(([left], [right]) => left.localeCompare(right))
54
+ .flatMap(([functionName, value]) =>
55
+ FunctionRegistryItem.isFunctionRegistryItem(value)
56
+ ? required.flatMap(({ key }) =>
57
+ value._tag === "Confect" &&
58
+ value.middlewareAttachments.some(({ spec }) => spec.key === key)
59
+ ? []
60
+ : [
61
+ {
62
+ functionName:
63
+ groupPath === ""
64
+ ? functionName
65
+ : `${groupPath}.${functionName}`,
66
+ middlewareKey: key,
67
+ },
68
+ ],
69
+ )
70
+ : [],
71
+ );
@@ -1,8 +1,8 @@
1
1
  import * as MiddlewareAttachment from "@confect/core/MiddlewareAttachment";
2
2
  import type * as MiddlewareSpec from "@confect/core/MiddlewareSpec";
3
3
  import * as Result from "effect/Result";
4
- import type * as FunctionRegistryItem from "./FunctionRegistryItem";
5
- import type * as MiddlewareRegistryItem from "./MiddlewareRegistryItem";
4
+ import type * as FunctionRegistryItem from "./FunctionRegistryItem.js";
5
+ import type * as MiddlewareRegistryItem from "./MiddlewareRegistryItem.js";
6
6
 
7
7
  /**
8
8
  * A middleware spec paired with its implementation for one function's type—the
package/src/Storage.ts CHANGED
@@ -3,9 +3,9 @@ import type { GenericId } from "convex/values";
3
3
  import * as Context from "effect/Context";
4
4
  import * as Effect from "effect/Effect";
5
5
  import * as Layer from "effect/Layer";
6
- import { StorageActionWriter } from "./StorageActionWriter";
7
- import { StorageReader } from "./StorageReader";
8
- import { StorageWriter } from "./StorageWriter";
6
+ import { StorageActionWriter } from "./StorageActionWriter.js";
7
+ import { StorageReader } from "./StorageReader.js";
8
+ import { StorageWriter } from "./StorageWriter.js";
9
9
 
10
10
  const make = Effect.gen(function* () {
11
11
  const reader = yield* StorageReader;
@@ -6,7 +6,7 @@ import { flow } from "effect/Function";
6
6
  import * as Effect from "effect/Effect";
7
7
  import * as Layer from "effect/Layer";
8
8
  import * as Option from "effect/Option";
9
- import { BlobNotFoundError } from "./BlobNotFoundError";
9
+ import { BlobNotFoundError } from "./BlobNotFoundError.js";
10
10
  import type * as ScopedId from "@confect/core/GenericId";
11
11
 
12
12
  export type Service<Scope extends IdScope.IdScope = IdScope.App> = {
@@ -7,7 +7,7 @@ import * as Effect from "effect/Effect";
7
7
  import * as Layer from "effect/Layer";
8
8
  import * as Option from "effect/Option";
9
9
  import * as Schema from "effect/Schema";
10
- import { BlobNotFoundError } from "./BlobNotFoundError";
10
+ import { BlobNotFoundError } from "./BlobNotFoundError.js";
11
11
  import type * as ScopedId from "@confect/core/GenericId";
12
12
 
13
13
  export type Service<Scope extends IdScope.IdScope = IdScope.App> = {
@@ -6,7 +6,7 @@ import { pipe } from "effect/Function";
6
6
  import * as Effect from "effect/Effect";
7
7
  import * as Layer from "effect/Layer";
8
8
  import * as Schema from "effect/Schema";
9
- import { BlobNotFoundError } from "./BlobNotFoundError";
9
+ import { BlobNotFoundError } from "./BlobNotFoundError.js";
10
10
  import type * as ScopedId from "@confect/core/GenericId";
11
11
 
12
12
  export type Service<Scope extends IdScope.IdScope = IdScope.App> = {
package/src/TableInfo.ts CHANGED
@@ -12,8 +12,8 @@ import type {
12
12
  import type { GenericValidator } from "convex/values";
13
13
  import type { Schema, Types } from "effect";
14
14
  import type { WithSystemFields } from "@confect/core/SystemFields";
15
- import type * as Document_ from "./Document";
16
- import type * as Table from "./Table";
15
+ import type * as Document_ from "./Document.js";
16
+ import type * as Table from "./Table.js";
17
17
 
18
18
  export declare const TypeId: "~@confect/server/TableInfo";
19
19
  export type TypeId = typeof TypeId;
@@ -8,7 +8,7 @@ import type {
8
8
  import * as Context from "effect/Context";
9
9
  import * as Effect from "effect/Effect";
10
10
  import * as Layer from "effect/Layer";
11
- import type * as DataModel from "./DataModel";
11
+ import type * as DataModel from "./DataModel.js";
12
12
 
13
13
  type ConvexVectorSearch<DataModel_ extends DataModel.AnyWithProps> =
14
14
  GenericActionCtx<DataModel.ToConvex<DataModel_>>["vectorSearch"];
package/src/index.ts CHANGED
@@ -1,87 +1,88 @@
1
- export * as AiGatewayDecisionClient from "./AiGatewayDecisionClient";
2
- export * as AiGatewayDecisionModel from "./AiGatewayDecisionModel";
3
- export * as AiGatewayLanguageClient from "./AiGatewayLanguageClient";
4
- export * as AiGatewayLanguageModel from "./AiGatewayLanguageModel";
5
- export * as ActionCtx from "./ActionCtx";
6
- export * as ActionRunner from "./ActionRunner";
7
- export * as Auth from "./Auth";
8
- export * as BlobNotFoundError from "./BlobNotFoundError";
9
- export * as Callback from "./Callback";
10
- export * as ConvexConfigProvider from "./ConvexConfigProvider";
11
- export * as ConvexFunctionDefinitions from "./ConvexFunctionDefinitions";
12
- export * as ConvexLogger from "./ConvexLogger";
13
- export * as CronJob from "./CronJob";
14
- export * as CronJobs from "./CronJobs";
15
- export * as DatabaseReader from "./DatabaseReader";
16
- export * as DatabaseSchema from "./DatabaseSchema";
17
- export * as DatabaseWriter from "./DatabaseWriter";
18
- export * as DataModel from "./DataModel";
19
- export * as Document from "./Document";
20
- export * as ExecutionMetadata from "./ExecutionMetadata";
21
- export * as FunctionImpl from "./FunctionImpl";
22
- export * as FunctionRegistryItem from "./FunctionRegistryItem";
23
- export * as GroupImpl from "./GroupImpl";
24
- export * as Handler from "./Handler";
25
- export * as HttpRouter from "./HttpRouter";
26
- export * as MiddlewareImpl from "./MiddlewareImpl";
27
- export * as MiddlewareRegistryItem from "./MiddlewareRegistryItem";
28
- export * as MutationCtx from "./MutationCtx";
29
- export * as MutationRunner from "./MutationRunner";
30
- export * as MutationTransactionContext from "./MutationTransactionContext";
31
- export * as OrderedQuery from "./OrderedQuery";
32
- export * as QueryCtx from "./QueryCtx";
33
- export * as QueryInitializer from "./QueryInitializer";
34
- export * as QueryRunner from "./QueryRunner";
35
- export * as QueryTransactionContext from "./QueryTransactionContext";
1
+ export * as AiGatewayDecisionClient from "./AiGatewayDecisionClient.js";
2
+ export * as AiGatewayDecisionModel from "./AiGatewayDecisionModel.js";
3
+ export * as AiGatewayLanguageClient from "./AiGatewayLanguageClient.js";
4
+ export * as AiGatewayLanguageModel from "./AiGatewayLanguageModel.js";
5
+ export * as ActionCtx from "./ActionCtx.js";
6
+ export * as ActionRunner from "./ActionRunner.js";
7
+ export * as Auth from "./Auth.js";
8
+ export * as BlobNotFoundError from "./BlobNotFoundError.js";
9
+ export * as Callback from "./Callback.js";
10
+ export * as ConvexConfigProvider from "./ConvexConfigProvider.js";
11
+ export * as ConvexFunctionDefinitions from "./ConvexFunctionDefinitions.js";
12
+ export * as ConvexLogger from "./ConvexLogger.js";
13
+ export * as CronJob from "./CronJob.js";
14
+ export * as CronJobs from "./CronJobs.js";
15
+ export * as DatabaseReader from "./DatabaseReader.js";
16
+ export * as DatabaseSchema from "./DatabaseSchema.js";
17
+ export * as DatabaseWriter from "./DatabaseWriter.js";
18
+ export * as DataModel from "./DataModel.js";
19
+ export * as Document from "./Document.js";
20
+ export * as ExecutionMetadata from "./ExecutionMetadata.js";
21
+ export * as FunctionImpl from "./FunctionImpl.js";
22
+ export * as FunctionRegistryItem from "./FunctionRegistryItem.js";
23
+ export * as GroupImpl from "./GroupImpl.js";
24
+ export * as Handler from "./Handler.js";
25
+ export * as HttpRouter from "./HttpRouter.js";
26
+ export * as MiddlewareImpl from "./MiddlewareImpl.js";
27
+ export * as MiddlewareRegistryItem from "./MiddlewareRegistryItem.js";
28
+ export * as MutationCtx from "./MutationCtx.js";
29
+ export * as MutationRunner from "./MutationRunner.js";
30
+ export * as MutationTransactionContext from "./MutationTransactionContext.js";
31
+ export * as OfficialComponent from "./OfficialComponent.js";
32
+ export * as OrderedQuery from "./OrderedQuery.js";
33
+ export * as QueryCtx from "./QueryCtx.js";
34
+ export * as QueryInitializer from "./QueryInitializer.js";
35
+ export * as QueryRunner from "./QueryRunner.js";
36
+ export * as QueryTransactionContext from "./QueryTransactionContext.js";
36
37
  /**
37
38
  * @experimental
38
39
  */
39
- export * as QueryStream from "./QueryStream";
40
+ export * as QueryStream from "./QueryStream.js";
40
41
  /**
41
42
  * @experimental
42
43
  */
43
- export * as QueryStreamCursor from "./QueryStreamCursor";
44
+ export * as QueryStreamCursor from "./QueryStreamCursor.js";
44
45
  /**
45
46
  * @experimental
46
47
  */
47
- export * as QueryStreamKeyLabels from "./QueryStreamKeyLabels";
48
+ export * as QueryStreamKeyLabels from "./QueryStreamKeyLabels.js";
48
49
  /**
49
50
  * @experimental
50
51
  */
51
- export * as QueryStreamKeyLayout from "./QueryStreamKeyLayout";
52
+ export * as QueryStreamKeyLayout from "./QueryStreamKeyLayout.js";
52
53
  /**
53
54
  * @experimental
54
55
  */
55
- export * as QueryStreamOrderDirection from "./QueryStreamOrderDirection";
56
+ export * as QueryStreamOrderDirection from "./QueryStreamOrderDirection.js";
56
57
  /**
57
58
  * @experimental
58
59
  */
59
- export * as QueryStreamKeyValues from "./QueryStreamKeyValues";
60
+ export * as QueryStreamKeyValues from "./QueryStreamKeyValues.js";
60
61
  /**
61
62
  * @experimental
62
63
  */
63
- export * as QueryStreamKeyBounds from "./QueryStreamKeyBounds";
64
+ export * as QueryStreamKeyBounds from "./QueryStreamKeyBounds.js";
64
65
  /**
65
66
  * @experimental
66
67
  */
67
- export * as QueryStreamIndexRange from "./QueryStreamIndexRange";
68
+ export * as QueryStreamIndexRange from "./QueryStreamIndexRange.js";
68
69
  /**
69
70
  * @experimental
70
71
  */
71
- export * as QueryStreamReadBudget from "./QueryStreamReadBudget";
72
- export * as RegisteredConvexFunction from "./RegisteredConvexFunction";
73
- export * as RegisteredFunction from "./RegisteredFunction";
74
- export * as RegisteredFunctions from "./RegisteredFunctions";
75
- export * as Registry from "./Registry";
76
- export * as RegistryItems from "./RegistryItems";
77
- export * as ResolvedMiddleware from "./ResolvedMiddleware";
78
- export * as RequestMetadata from "./RequestMetadata";
79
- export * as Scheduler from "./Scheduler";
80
- export * as Storage from "./Storage";
81
- export * as StorageActionWriter from "./StorageActionWriter";
82
- export * as StorageReader from "./StorageReader";
83
- export * as StorageWriter from "./StorageWriter";
84
- export * as Table from "./Table";
85
- export * as TableInfo from "./TableInfo";
86
- export * as TransactionMetadata from "./TransactionMetadata";
87
- export * as VectorSearch from "./VectorSearch";
72
+ export * as QueryStreamReadBudget from "./QueryStreamReadBudget.js";
73
+ export * as RegisteredConvexFunction from "./RegisteredConvexFunction.js";
74
+ export * as RegisteredFunction from "./RegisteredFunction.js";
75
+ export * as RegisteredFunctions from "./RegisteredFunctions.js";
76
+ export * as Registry from "./Registry.js";
77
+ export * as RegistryItems from "./RegistryItems.js";
78
+ export * as ResolvedMiddleware from "./ResolvedMiddleware.js";
79
+ export * as RequestMetadata from "./RequestMetadata.js";
80
+ export * as Scheduler from "./Scheduler.js";
81
+ export * as Storage from "./Storage.js";
82
+ export * as StorageActionWriter from "./StorageActionWriter.js";
83
+ export * as StorageReader from "./StorageReader.js";
84
+ export * as StorageWriter from "./StorageWriter.js";
85
+ export * as Table from "./Table.js";
86
+ export * as TableInfo from "./TableInfo.js";
87
+ export * as TransactionMetadata from "./TransactionMetadata.js";
88
+ export * as VectorSearch from "./VectorSearch.js";
@@ -1,8 +1,8 @@
1
1
  import * as OpenRouterClient from "@effect/ai-openrouter/OpenRouterClient";
2
2
  import * as Effect from "effect/Effect";
3
3
  import * as Layer from "effect/Layer";
4
- import * as AiGatewayServiceToken from "./AiGatewayServiceToken";
5
- import { AI_GATEWAY_API_URL } from "./constants";
4
+ import * as AiGatewayServiceToken from "./AiGatewayServiceToken.js";
5
+ import { AI_GATEWAY_API_URL } from "./constants.js";
6
6
 
7
7
  export const make = Effect.gen(function* () {
8
8
  const serviceToken = yield* AiGatewayServiceToken.AiGatewayServiceToken;
@@ -1,8 +1,8 @@
1
1
  import * as OpenAiClient from "@effect/ai-openai-compat/OpenAiClient";
2
2
  import * as Effect from "effect/Effect";
3
3
  import * as Layer from "effect/Layer";
4
- import * as AiGatewayServiceToken from "./AiGatewayServiceToken";
5
- import { AI_GATEWAY_API_URL } from "./constants";
4
+ import * as AiGatewayServiceToken from "./AiGatewayServiceToken.js";
5
+ import { AI_GATEWAY_API_URL } from "./constants.js";
6
6
 
7
7
  export const make = Effect.gen(function* () {
8
8
  const serviceToken = yield* AiGatewayServiceToken.AiGatewayServiceToken;
@@ -0,0 +1,87 @@
1
+ import type { ReadonlyValue } from "@confect/core/SchemaToValidator";
2
+ import { pipe } from "effect/Function";
3
+ import * as Effect from "effect/Effect";
4
+ import * as Record from "effect/Record";
5
+ import * as Schema from "effect/Schema";
6
+ import * as SchemaAST from "effect/SchemaAST";
7
+ import type * as Table from "../Table.js";
8
+
9
+ export type EncodedPatch = Record.ReadonlyRecord<
10
+ string,
11
+ ReadonlyValue | undefined
12
+ >;
13
+
14
+ export type PatchEncoder = (
15
+ patch: Record.ReadonlyRecord<string, unknown>,
16
+ ) => Effect.Effect<EncodedPatch, Schema.SchemaError>;
17
+
18
+ const patchEncoders = new WeakMap<Table.AnyWithProps, PatchEncoder | null>();
19
+
20
+ /**
21
+ * Returns the encoder for patches to the table's documents, or `undefined` when
22
+ * the table's codec does not encode each field independently. The encoder maps
23
+ * every patched field of the table to its encoded value, or to `undefined` when
24
+ * the patch unsets the field or the field's codec encodes the value as an
25
+ * absent key. Keys outside the table's fields are left out.
26
+ */
27
+ export const encoder = (
28
+ table: Table.AnyWithProps,
29
+ ): PatchEncoder | undefined => {
30
+ let cached = patchEncoders.get(table);
31
+ if (cached === undefined) {
32
+ cached = makePatchEncoder(table);
33
+ patchEncoders.set(table, cached);
34
+ }
35
+ return cached ?? undefined;
36
+ };
37
+
38
+ // A struct with no encoding of its own encodes each field through that field's
39
+ // codec alone, so a patch encodes field by field. A union or a transformation
40
+ // over the whole struct can make one field's encoding depend on another field.
41
+ // A struct-level check must see the decoded fields before they are encoded,
42
+ // and keys under an index signature have no field codec of their own.
43
+ const makePatchEncoder = (table: Table.AnyWithProps): PatchEncoder | null => {
44
+ const ast = table.Fields.ast;
45
+ if (
46
+ !SchemaAST.isObjects(ast) ||
47
+ ast.encoding !== undefined ||
48
+ ast.checks !== undefined ||
49
+ ast.indexSignatures.length > 0
50
+ ) {
51
+ return null;
52
+ }
53
+ // A field's codec runs only when the patch gives the field a value, since a
54
+ // codec can handle a missing key. Each comes from the table, whose codecs
55
+ // need no services.
56
+ const fieldEncoders: Record.ReadonlyRecord<
57
+ string,
58
+ (
59
+ value: unknown,
60
+ ) => Effect.Effect<ReadonlyValue | undefined, Schema.SchemaError>
61
+ > = Object.fromEntries(
62
+ ast.propertySignatures.map(({ name, type }) => {
63
+ const key = String(name);
64
+ const encode = Schema.encodeUnknownEffect(
65
+ Schema.Struct({
66
+ [key]: Schema.optionalKey(
67
+ Schema.make<Schema.Codec<unknown, ReadonlyValue>>(type),
68
+ ),
69
+ }),
70
+ );
71
+ return [
72
+ key,
73
+ (value: unknown) =>
74
+ Effect.map(encode({ [key]: value }), (encoded) => encoded[key]),
75
+ ];
76
+ }),
77
+ );
78
+ return (patch) =>
79
+ pipe(
80
+ fieldEncoders,
81
+ Record.filter((_, name) => Object.hasOwn(patch, name)),
82
+ Record.map((encode, name) =>
83
+ patch[name] === undefined ? Effect.undefined : encode(patch[name]),
84
+ ),
85
+ Effect.all,
86
+ );
87
+ };
package/src/node.ts CHANGED
@@ -1 +1 @@
1
- export * as RegisteredNodeFunction from "./RegisteredNodeFunction";
1
+ export * as RegisteredNodeFunction from "./RegisteredNodeFunction.js";