@nkzw/fate 1.3.3 → 1.5.0

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 (191) hide show
  1. package/README.md +326 -0
  2. package/docs/api/classes/FateClient.md +51 -199
  3. package/docs/api/functions/clientRoot.md +1 -1
  4. package/docs/api/functions/createClient.md +1 -1
  5. package/docs/api/functions/createGraphQLTransport.md +1 -1
  6. package/docs/api/functions/createHTTPTransport.md +1 -1
  7. package/docs/api/functions/createTRPCTransport.md +5 -1
  8. package/docs/api/functions/defer.md +1 -1
  9. package/docs/api/functions/getDeferredMetadata.md +1 -1
  10. package/docs/api/functions/getListEntries.md +1 -1
  11. package/docs/api/functions/getSelectionPlan.md +1 -1
  12. package/docs/api/functions/graphqlMutation.md +1 -1
  13. package/docs/api/functions/isDeferred.md +1 -1
  14. package/docs/api/functions/isRecord.md +1 -1
  15. package/docs/api/functions/isViewTag.md +1 -1
  16. package/docs/api/functions/liveConnectionTopic.md +1 -1
  17. package/docs/api/functions/liveEntityTopic.md +1 -1
  18. package/docs/api/functions/liveGlobalConnectionTopic.md +1 -1
  19. package/docs/api/functions/mutation.md +1 -1
  20. package/docs/api/functions/toEntityId.md +1 -1
  21. package/docs/api/functions/view.md +1 -1
  22. package/docs/api/index.md +4 -1
  23. package/docs/api/interfaces/FateThenable.md +3 -3
  24. package/docs/api/interfaces/Persistence.md +23 -0
  25. package/docs/api/interfaces/PersistenceSession.md +109 -0
  26. package/docs/api/interfaces/Transport.md +46 -7
  27. package/docs/api/server/classes/FateRequestError.md +5 -5
  28. package/docs/api/server/drizzle/functions/createDrizzleFate.md +1 -1
  29. package/docs/api/server/drizzle/functions/createDrizzleSourceAdapter.md +1 -1
  30. package/docs/api/server/drizzle/functions/createDrizzleSourceRegistry.md +1 -1
  31. package/docs/api/server/drizzle/type-aliases/DrizzleManyToManyConfig.md +1 -1
  32. package/docs/api/server/drizzle/type-aliases/DrizzleManyToManyInput.md +1 -1
  33. package/docs/api/server/drizzle/type-aliases/DrizzleQueryExtra.md +3 -3
  34. package/docs/api/server/drizzle/type-aliases/DrizzleSourceAdapter.md +9 -9
  35. package/docs/api/server/drizzle/type-aliases/DrizzleViewConfig.md +1 -1
  36. package/docs/api/server/functions/bindSourceProcedures.md +1 -1
  37. package/docs/api/server/functions/computed.md +1 -1
  38. package/docs/api/server/functions/count.md +1 -1
  39. package/docs/api/server/functions/createFateFetchHandler.md +1 -1
  40. package/docs/api/server/functions/createFateServer.md +1 -1
  41. package/docs/api/server/functions/createHonoFateHandler.md +1 -1
  42. package/docs/api/server/functions/createLiveEventBus.md +1 -1
  43. package/docs/api/server/functions/createNestedSourcePlan.md +1 -1
  44. package/docs/api/server/functions/createResolver.md +1 -1
  45. package/docs/api/server/functions/createSourcePlan.md +1 -1
  46. package/docs/api/server/functions/createSourceProcedures.md +1 -1
  47. package/docs/api/server/functions/dataView.md +1 -1
  48. package/docs/api/server/functions/field.md +1 -1
  49. package/docs/api/server/functions/getNestedSelection.md +1 -1
  50. package/docs/api/server/functions/getScopedArgs.md +1 -1
  51. package/docs/api/server/functions/hasNestedSelection.md +1 -1
  52. package/docs/api/server/functions/list.md +1 -1
  53. package/docs/api/server/functions/refetchSourceById.md +1 -1
  54. package/docs/api/server/functions/resolveSourceById.md +1 -1
  55. package/docs/api/server/functions/resolveSourceByIds.md +1 -1
  56. package/docs/api/server/functions/resolveSourceConnection.md +1 -1
  57. package/docs/api/server/functions/resolver.md +1 -1
  58. package/docs/api/server/functions/toPrismaSelect.md +1 -1
  59. package/docs/api/server/functions/withConnection.md +1 -1
  60. package/docs/api/server/prisma/functions/createPrismaFate.md +1 -1
  61. package/docs/api/server/prisma/functions/createPrismaSourceAdapter.md +1 -1
  62. package/docs/api/server/prisma/functions/createPrismaSourceRegistry.md +1 -1
  63. package/docs/api/server/prisma/functions/prismaConnectionArgs.md +1 -1
  64. package/docs/api/server/prisma/type-aliases/PrismaDelegate.md +4 -4
  65. package/docs/api/server/prisma/type-aliases/PrismaQueryExtra.md +1 -1
  66. package/docs/api/server/prisma/type-aliases/PrismaSourceAdapter.md +9 -9
  67. package/docs/api/server/prisma/type-aliases/PrismaViewConfig.md +1 -1
  68. package/docs/api/server/type-aliases/ComputedField.md +5 -5
  69. package/docs/api/server/type-aliases/ComputedSelection.md +1 -1
  70. package/docs/api/server/type-aliases/ConnectionItem.md +3 -3
  71. package/docs/api/server/type-aliases/ConnectionPagination.md +5 -5
  72. package/docs/api/server/type-aliases/ConnectionResult.md +3 -3
  73. package/docs/api/server/type-aliases/CountSelection.md +4 -4
  74. package/docs/api/server/type-aliases/CountWhere.md +1 -1
  75. package/docs/api/server/type-aliases/DataViewListOptions.md +2 -2
  76. package/docs/api/server/type-aliases/DataViewOrderBy.md +1 -1
  77. package/docs/api/server/type-aliases/DataViewOrderDirection.md +1 -1
  78. package/docs/api/server/type-aliases/DataViewResult.md +1 -1
  79. package/docs/api/server/type-aliases/Entity.md +1 -1
  80. package/docs/api/server/type-aliases/FateServer.md +5 -5
  81. package/docs/api/server/type-aliases/FateServerManifest.md +1 -1
  82. package/docs/api/server/type-aliases/FieldSelection.md +3 -3
  83. package/docs/api/server/type-aliases/LiveConnectionEventType.md +1 -1
  84. package/docs/api/server/type-aliases/LiveConnectionSourceEvent.md +1 -1
  85. package/docs/api/server/type-aliases/LiveEventBus.md +1 -1
  86. package/docs/api/server/type-aliases/LiveEventType.md +1 -1
  87. package/docs/api/server/type-aliases/LiveSourceEvent.md +1 -1
  88. package/docs/api/server/type-aliases/NativeFateAPI.md +4 -4
  89. package/docs/api/server/type-aliases/OrderDirection.md +1 -1
  90. package/docs/api/server/type-aliases/SourceConfig.md +6 -6
  91. package/docs/api/server/type-aliases/SourceDefinition.md +6 -6
  92. package/docs/api/server/type-aliases/SourceOrder.md +1 -1
  93. package/docs/api/server/type-aliases/SourceOrderField.md +3 -3
  94. package/docs/api/server/type-aliases/SourcePlan.md +1 -1
  95. package/docs/api/server/type-aliases/SourcePlanNode.md +1 -1
  96. package/docs/api/server/type-aliases/SourceRegistry.md +1 -1
  97. package/docs/api/server/type-aliases/SourceRelation.md +1 -1
  98. package/docs/api/server/type-aliases/SourceRelationConfig.md +1 -1
  99. package/docs/api/server/variables/byIdInput.md +1 -1
  100. package/docs/api/server/variables/connectionArgs.md +1 -1
  101. package/docs/api/type-aliases/ConnectionMetadata.md +1 -1
  102. package/docs/api/type-aliases/ConnectionRef.md +1 -1
  103. package/docs/api/type-aliases/Deferred.md +1 -1
  104. package/docs/api/type-aliases/DeferredMetadata.md +1 -1
  105. package/docs/api/type-aliases/DeferredSelection.md +1 -1
  106. package/docs/api/type-aliases/DeferredSnapshot.md +1 -1
  107. package/docs/api/type-aliases/Entity.md +2 -2
  108. package/docs/api/type-aliases/EntityId.md +1 -1
  109. package/docs/api/type-aliases/FateDehydratedState.md +1 -1
  110. package/docs/api/type-aliases/FateLiveConnectionEvent.md +1 -1
  111. package/docs/api/type-aliases/FateLiveEvent.md +1 -1
  112. package/docs/api/type-aliases/FateMutations.md +1 -1
  113. package/docs/api/type-aliases/FateOperation.md +2 -2
  114. package/docs/api/type-aliases/FateProtocolRequest.md +1 -1
  115. package/docs/api/type-aliases/FateProtocolResponse.md +1 -1
  116. package/docs/api/type-aliases/FateRecord.md +1 -1
  117. package/docs/api/type-aliases/FateRoots.md +1 -1
  118. package/docs/api/type-aliases/GraphQLMutationDefinition.md +1 -1
  119. package/docs/api/type-aliases/GraphQLMutationInput.md +1 -1
  120. package/docs/api/type-aliases/GraphQLMutationMap.md +1 -1
  121. package/docs/api/type-aliases/GraphQLMutationOutput.md +1 -1
  122. package/docs/api/type-aliases/GraphQLTransportOptions.md +19 -11
  123. package/docs/api/type-aliases/HydrateOptions.md +1 -1
  124. package/docs/api/type-aliases/HydrationLimits.md +1 -1
  125. package/docs/api/type-aliases/InferFateAPI.md +1 -1
  126. package/docs/api/type-aliases/List.md +1 -1
  127. package/docs/api/type-aliases/ListEntry.md +1 -1
  128. package/docs/api/type-aliases/ListItem.md +1 -1
  129. package/docs/api/type-aliases/Mask.md +1 -1
  130. package/docs/api/type-aliases/MutationDefinition.md +1 -1
  131. package/docs/api/type-aliases/MutationEntity.md +1 -1
  132. package/docs/api/type-aliases/MutationIdentifier.md +1 -1
  133. package/docs/api/type-aliases/MutationIdentity.md +7 -0
  134. package/docs/api/type-aliases/MutationInput.md +1 -1
  135. package/docs/api/type-aliases/MutationResult.md +1 -1
  136. package/docs/api/type-aliases/NodesItem.md +1 -1
  137. package/docs/api/type-aliases/Pagination.md +5 -5
  138. package/docs/api/type-aliases/PersistenceSnapshot.md +5 -0
  139. package/docs/api/type-aliases/Request.md +1 -1
  140. package/docs/api/type-aliases/RequestMode.md +1 -1
  141. package/docs/api/type-aliases/RequestOptions.md +2 -2
  142. package/docs/api/type-aliases/RequestResult.md +1 -1
  143. package/docs/api/type-aliases/Selection.md +1 -1
  144. package/docs/api/type-aliases/TypeConfig.md +4 -4
  145. package/docs/api/type-aliases/View.md +1 -1
  146. package/docs/api/type-aliases/ViewData.md +1 -1
  147. package/docs/api/type-aliases/ViewEntity.md +1 -1
  148. package/docs/api/type-aliases/ViewEntityName.md +1 -1
  149. package/docs/api/type-aliases/ViewRef.md +1 -1
  150. package/docs/api/type-aliases/ViewSelection.md +1 -1
  151. package/docs/api/type-aliases/ViewSnapshot.md +1 -1
  152. package/docs/api/type-aliases/ViewTag.md +1 -1
  153. package/docs/api/variables/ConnectionTag.md +1 -1
  154. package/docs/api/variables/DeferTag.md +1 -1
  155. package/docs/api/variables/DeferredTag.md +1 -1
  156. package/docs/guide/getting-started.md +2 -0
  157. package/docs/guide/persistence.md +323 -0
  158. package/lib/{liveTopics-uVP0LG-Q.mjs → args-CRLIRl_v.mjs} +1 -59
  159. package/lib/cli.d.mts +1 -1
  160. package/lib/{executor-C8HNogYG.d.mts → executor-DoiTBiVv.d.mts} +18 -65
  161. package/lib/{graphqlTransport-DskuXeUP.d.mts → graphqlTransport-DGLYyRxL.d.mts} +4 -14
  162. package/lib/{graphqlTransport-DSBVS2Fq.mjs → graphqlTransport-DmheG3AO.mjs} +3 -2
  163. package/lib/graphqlTransport.d.mts +1 -1
  164. package/lib/graphqlTransport.mjs +1 -1
  165. package/lib/hydration-DPZRJgnu.mjs +273 -0
  166. package/lib/idempotency-types-CqA-BFpn.d.mts +15 -0
  167. package/lib/idempotency.d.mts +26 -0
  168. package/lib/idempotency.mjs +34 -0
  169. package/lib/index.d.mts +6 -15
  170. package/lib/index.mjs +560 -1774
  171. package/lib/{list-sI2UPhHc.d.mts → list-BRT1VtiT.d.mts} +1 -2
  172. package/lib/list.d.mts +1 -1
  173. package/lib/liveTopics-DuFkDZQm.mjs +17 -0
  174. package/lib/persistence.d.mts +38 -0
  175. package/lib/persistence.mjs +1529 -0
  176. package/lib/protocol-DS5sf6sd.mjs +44 -0
  177. package/lib/{record-CZyyeLa3.d.mts → record-DITM4zb_.d.mts} +14 -19
  178. package/lib/server/drizzle.d.mts +45 -114
  179. package/lib/server/drizzle.mjs +2 -2
  180. package/lib/server/prisma.d.mts +52 -127
  181. package/lib/server/prisma.mjs +9 -8
  182. package/lib/server.d.mts +4 -16
  183. package/lib/server.mjs +21 -35
  184. package/lib/sortObjectKeys-yhuitEQZ.mjs +9 -0
  185. package/lib/{sourceRouter-DSaADXSf.mjs → sourceRouter-51POBlEE.mjs} +9 -6
  186. package/lib/store-CeatPJeK.mjs +1350 -0
  187. package/lib/{transport-DhaVVq4P.d.mts → transport-DqjhjLfC.d.mts} +672 -517
  188. package/lib/vite.d.mts +0 -1
  189. package/lib/vite.mjs +19 -11
  190. package/package.json +15 -5
  191. package/docs/api/type-aliases/Snapshot.md +0 -7
@@ -0,0 +1,44 @@
1
+ //#region src/protocol.ts
2
+ var FateRequestError = class extends Error {
3
+ constructor(code, message, options = {}) {
4
+ super(message);
5
+ this.name = "FateRequestError";
6
+ this.code = code;
7
+ this.issues = options.issues;
8
+ this.status = options.status ?? statusFromErrorCode(code);
9
+ }
10
+ };
11
+ const statusFromErrorCode = (code) => {
12
+ switch (code) {
13
+ case "BAD_REQUEST":
14
+ case "VALIDATION_ERROR": return 400;
15
+ case "UNAUTHORIZED": return 401;
16
+ case "FORBIDDEN": return 403;
17
+ case "NOT_FOUND": return 404;
18
+ case "INTERNAL_ERROR": return 500;
19
+ }
20
+ };
21
+ const errorCodeFromStatus = (status) => {
22
+ if (status === 400) return "BAD_REQUEST";
23
+ if (status === 401) return "UNAUTHORIZED";
24
+ if (status === 403) return "FORBIDDEN";
25
+ if (status === 404) return "NOT_FOUND";
26
+ return "INTERNAL_ERROR";
27
+ };
28
+ const toProtocolError = (error) => {
29
+ if (error instanceof FateRequestError) return {
30
+ code: error.code,
31
+ issues: error.issues,
32
+ message: error.message
33
+ };
34
+ if (error instanceof Error) return {
35
+ code: "INTERNAL_ERROR",
36
+ message: "Internal server error."
37
+ };
38
+ return {
39
+ code: "INTERNAL_ERROR",
40
+ message: "Internal server error."
41
+ };
42
+ };
43
+ //#endregion
44
+ export { errorCodeFromStatus as n, toProtocolError as r, FateRequestError as t };
@@ -1,6 +1,6 @@
1
- import { r as AnyRecord } from "./transport-DhaVVq4P.mjs";
2
- import { N as DataViewResult, S as ConnectionResult, k as DataView, l as SourceDefinition, t as SourceRegistry } from "./executor-C8HNogYG.mjs";
3
-
1
+ import { r as MutationIdentity, v as AnyRecord } from "./transport-DqjhjLfC.mjs";
2
+ import { t as MutationIdempotency } from "./idempotency-types-CqA-BFpn.mjs";
3
+ import { N as DataViewResult, S as ConnectionResult, k as DataView, l as SourceDefinition, t as SourceRegistry } from "./executor-DoiTBiVv.mjs";
4
4
  //#region src/liveTopics.d.ts
5
5
  declare const liveEntityTopic: (type: string, id: string | number) => string;
6
6
  declare const liveConnectionTopic: (procedure: string, args?: Record<string, unknown>) => string;
@@ -154,6 +154,7 @@ type ContextOptions<AdapterContext> = {
154
154
  };
155
155
  type FateServerOptions<Context, Roots extends RootMap, Queries extends Record<string, QueryDefinition<Context, any, any>>, Lists extends Record<string, ListDefinition<Context, any, any>>, Mutations extends Record<string, MutationDefinition<Context, any, any>>, AdapterContext> = {
156
156
  context?: (options: ContextOptions<AdapterContext>) => MaybePromise<Context>;
157
+ idempotency?: MutationIdempotency<Context>;
157
158
  lists?: Lists;
158
159
  live?: false | LiveConfig;
159
160
  mutations?: Mutations;
@@ -165,34 +166,34 @@ type RootView<Root> = Root extends DataView<AnyRecord> ? Root : Root extends {
165
166
  view: infer View extends DataView<AnyRecord>;
166
167
  } ? View : never;
167
168
  type RootProcedure<_Root, Name extends string> = Name;
168
- type RootOutput<Root> = RootView<Root> extends infer View extends DataView<AnyRecord> ? View['kind'] extends 'list' ? ConnectionResult<DataViewResult<View>> : DataViewResult<View> | null : never;
169
+ type RootOutput<Root> = RootView<Root> extends (infer View extends DataView<AnyRecord>) ? View['kind'] extends 'list' ? ConnectionResult<DataViewResult<View>> : DataViewResult<View> | null : never;
169
170
  type RootLists<Roots extends RootMap> = { [K in keyof Roots as RootView<Roots[K]>['kind'] extends 'list' ? RootProcedure<Roots[K], K & string> : never]: {
170
171
  input: OperationInput;
171
172
  output: RootOutput<Roots[K]>;
172
- } };
173
+ }; };
173
174
  type RootQueries<Roots extends RootMap> = { [K in keyof Roots as RootView<Roots[K]>['kind'] extends 'list' ? never : RootProcedure<Roots[K], K & string>]: {
174
175
  input: OperationInput;
175
176
  output: RootOutput<Roots[K]>;
176
- } };
177
+ }; };
177
178
  type QueryAPI<Queries extends Record<string, QueryDefinition<any, any, any>>> = { [K in keyof Queries]: Queries[K] extends QueryDefinition<any, infer Args, infer Output> ? {
178
179
  input: {
179
180
  args?: Args;
180
181
  select: Array<string>;
181
182
  };
182
183
  output: Awaited<Output>;
183
- } : never };
184
+ } : never; };
184
185
  type ListAPI<Lists extends Record<string, ListDefinition<any, any, any>>> = { [K in keyof Lists]: Lists[K] extends ListDefinition<any, infer Args, infer Output> ? {
185
186
  input: {
186
187
  args?: Args;
187
188
  select: Array<string>;
188
189
  };
189
190
  output: ConnectionResult<Awaited<Output>>;
190
- } : never };
191
+ } : never; };
191
192
  type MutationAPI<Mutations extends Record<string, MutationDefinition<any, any, any>>> = { [K in keyof Mutations]: Mutations[K] extends MutationDefinition<any, infer Input, infer Output> ? {
192
193
  entity: Mutations[K]['type'];
193
194
  input: Input;
194
195
  output: Awaited<Output>;
195
- } : never };
196
+ } : never; };
196
197
  type NativeFateAPI<Roots extends RootMap, Queries extends Record<string, QueryDefinition<any, any, any>>, Lists extends Record<string, ListDefinition<any, any, any>>, Mutations extends Record<string, MutationDefinition<any, any, any>>> = {
197
198
  lists: RootLists<Roots> & ListAPI<Lists>;
198
199
  mutations: MutationAPI<Mutations>;
@@ -220,15 +221,7 @@ type FateServerManifest = Readonly<{
220
221
  }>;
221
222
  types: Record<string, true>;
222
223
  }>;
223
- declare function createFateServer<Context = unknown, Roots extends RootMap = RootMap, Queries extends Record<string, QueryDefinition<Context, any, any>> = Record<never, never>, Lists extends Record<string, ListDefinition<Context, any, any>> = Record<never, never>, Mutations extends Record<string, MutationDefinition<Context, any, any>> = Record<never, never>, AdapterContext = unknown>({
224
- context,
225
- lists,
226
- live,
227
- mutations,
228
- queries,
229
- roots,
230
- sources
231
- }: FateServerOptions<Context, Roots, Queries, Lists, Mutations, AdapterContext>): FateServer<NativeFateAPI<Roots, Queries, Lists, Mutations>, AdapterContext>;
224
+ declare function createFateServer<Context = unknown, Roots extends RootMap = RootMap, Queries extends Record<string, QueryDefinition<Context, any, any>> = Record<never, never>, Lists extends Record<string, ListDefinition<Context, any, any>> = Record<never, never>, Mutations extends Record<string, MutationDefinition<Context, any, any>> = Record<never, never>, AdapterContext = unknown>({ context, idempotency, lists, live, mutations, queries, roots, sources }: FateServerOptions<Context, Roots, Queries, Lists, Mutations, AdapterContext>): FateServer<NativeFateAPI<Roots, Queries, Lists, Mutations>, AdapterContext>;
232
225
  declare function createFateFetchHandler<AdapterContext>(server: FateServer<unknown, AdapterContext>): (request: Request, adapterContext?: AdapterContext) => Promise<Response>;
233
226
  declare function createHonoFateHandler<Context>(server: FateServer<unknown, Context>): (context: Context & {
234
227
  req: {
@@ -237,7 +230,8 @@ declare function createHonoFateHandler<Context>(server: FateServer<unknown, Cont
237
230
  }) => Promise<Response>;
238
231
  //#endregion
239
232
  //#region src/protocol.d.ts
240
- type FateProtocolVersion = 1;
233
+ /** Version 2 requires support for durable mutation identities and receipt-only recovery. */
234
+ type FateProtocolVersion = 1 | 2;
241
235
  type FateOperationKind = 'byId' | 'list' | 'mutation' | 'query';
242
236
  type FateOperation = Readonly<{
243
237
  args?: Record<string, unknown>;
@@ -245,6 +239,7 @@ type FateOperation = Readonly<{
245
239
  ids?: Array<string | number>;
246
240
  input?: unknown;
247
241
  kind: FateOperationKind;
242
+ mutation?: MutationIdentity;
248
243
  name?: string;
249
244
  select: Array<string>;
250
245
  type?: string;
@@ -1,7 +1,6 @@
1
- import { r as AnyRecord, rt as QueryProcedure } from "../transport-DhaVVq4P.mjs";
2
- import { S as ConnectionResult, c as SourceConfig, f as SourcePlan, k as DataView, l as SourceDefinition, o as DataViewModule, p as SourcePlanNode, t as SourceRegistry } from "../executor-C8HNogYG.mjs";
1
+ import { st as QueryProcedure, v as AnyRecord } from "../transport-DqjhjLfC.mjs";
2
+ import { S as ConnectionResult, c as SourceConfig, f as SourcePlan, k as DataView, l as SourceDefinition, o as DataViewModule, p as SourcePlanNode, t as SourceRegistry } from "../executor-DoiTBiVv.mjs";
3
3
  import { AnyColumn, SQLWrapper, Table } from "drizzle-orm";
4
-
5
4
  //#region src/server/drizzle.d.ts
6
5
  type SourceTarget<Item extends AnyRecord = AnyRecord> = DataView<Item> | SourceDefinition<Item, unknown>;
7
6
  type ViewTarget<Item extends AnyRecord = AnyRecord> = DataView<Item>;
@@ -48,36 +47,19 @@ type DrizzleSourceAdapterOptions<Context> = {
48
47
  views: DrizzleViewsInput;
49
48
  };
50
49
  type DrizzleSourceAdapter<Context> = {
51
- fetchById: <Item extends AnyRecord = AnyRecord>({
52
- ctx,
53
- extra,
54
- id,
55
- plan
56
- }: {
50
+ fetchById: <Item extends AnyRecord = AnyRecord>({ ctx, extra, id, plan }: {
57
51
  ctx?: Context;
58
52
  extra?: DrizzleQueryExtra;
59
53
  id: string;
60
54
  plan: SourcePlan<Item, Context>;
61
55
  }) => Promise<Item | null>;
62
- fetchByIds: <Item extends AnyRecord = AnyRecord>({
63
- ctx,
64
- extra,
65
- ids,
66
- plan
67
- }: {
56
+ fetchByIds: <Item extends AnyRecord = AnyRecord>({ ctx, extra, ids, plan }: {
68
57
  ctx?: Context;
69
58
  extra?: DrizzleQueryExtra;
70
59
  ids: Array<string>;
71
60
  plan: SourcePlan<Item, Context>;
72
61
  }) => Promise<Array<Item>>;
73
- fetchConnection: <Item extends AnyRecord = AnyRecord>({
74
- ctx,
75
- cursor,
76
- direction,
77
- extra,
78
- plan,
79
- take
80
- }: {
62
+ fetchConnection: <Item extends AnyRecord = AnyRecord>({ ctx, cursor, direction, extra, plan, take }: {
81
63
  ctx?: Context;
82
64
  cursor?: string;
83
65
  direction: 'backward' | 'forward';
@@ -121,20 +103,34 @@ type SourceInput = {
121
103
  args?: Record<string, unknown>;
122
104
  select: Iterable<string>;
123
105
  };
124
- declare function createDrizzleSourceAdapter<Context>({
125
- db,
126
- nestedPaginationConcurrency,
127
- schema,
128
- views
129
- }: DrizzleSourceAdapterOptions<Context>): DrizzleSourceAdapter<Context>;
106
+ declare function createDrizzleSourceAdapter<Context>({ db, nestedPaginationConcurrency, schema, views }: DrizzleSourceAdapterOptions<Context>): DrizzleSourceAdapter<Context>;
130
107
  declare const createDrizzleSourceRegistry: <Context>(options: Parameters<typeof createDrizzleSourceAdapter<Context>>[0]) => SourceRegistry<Context>;
131
- declare function createDrizzleFate<Context, Procedure extends ProcedureLike>({
132
- procedure,
133
- ...options
134
- }: Parameters<typeof createDrizzleSourceAdapter<Context>>[0] & {
108
+ declare function createDrizzleFate<Context, Procedure extends ProcedureLike>({ procedure, ...options }: Parameters<typeof createDrizzleSourceAdapter<Context>>[0] & {
135
109
  procedure: Procedure;
136
110
  }): {
137
- connection: <TItem, TNode = TItem, TAdditionalInput extends import("zod").ZodObject<Record<string, import("zod").ZodType<unknown, unknown, import("zod/v4/core").$ZodTypeInternals<unknown, unknown>>>, import("zod/v4/core").$strip> | undefined = undefined>(options: {
111
+ fetchById: <Item extends AnyRecord = AnyRecord>({ ctx, extra, id, plan }: {
112
+ ctx?: Context | undefined;
113
+ extra?: DrizzleQueryExtra;
114
+ id: string;
115
+ plan: SourcePlan<Item, Context>;
116
+ }) => Promise<Item | null>;
117
+ fetchByIds: <Item extends AnyRecord = AnyRecord>({ ctx, extra, ids, plan }: {
118
+ ctx?: Context | undefined;
119
+ extra?: DrizzleQueryExtra;
120
+ ids: Array<string>;
121
+ plan: SourcePlan<Item, Context>;
122
+ }) => Promise<Item[]>;
123
+ fetchConnection: <Item extends AnyRecord = AnyRecord>({ ctx, cursor, direction, extra, plan, take }: {
124
+ ctx?: Context | undefined;
125
+ cursor?: string;
126
+ direction: 'backward' | 'forward';
127
+ extra?: DrizzleQueryExtra;
128
+ plan: SourcePlan<Item, Context>;
129
+ take: number;
130
+ }) => Promise<Item[]>;
131
+ getSource: <Item extends AnyRecord = AnyRecord>(target: SourceTarget<Item>) => SourceDefinition<Item, unknown>;
132
+ registry: SourceRegistry<Context>;
133
+ connection: <TItem, TNode = TItem, TAdditionalInput extends import("zod").ZodObject<Record<string, import("zod").ZodTypeAny<unknown, unknown, import("zod/v4/core").$ZodTypeInternals<unknown, unknown>>>, import("zod/v4/core").$strip> | undefined = undefined>(options: {
138
134
  defaultSize?: number;
139
135
  getCursor?: ((node: TNode) => string) | undefined;
140
136
  input?: TAdditionalInput | undefined;
@@ -147,10 +143,10 @@ declare function createDrizzleFate<Context, Procedure extends ProcedureLike>({
147
143
  };
148
144
  } ? TContext : unknown;
149
145
  input: {
150
- select: string[];
151
146
  args?: Record<string, unknown> | undefined;
147
+ select: string[];
152
148
  } & {
153
- args?: ((Record<string, unknown> | undefined) & (TAdditionalInput extends import("zod").ZodObject<Record<string, import("zod").ZodType<unknown, unknown, import("zod/v4/core").$ZodTypeInternals<unknown, unknown>>>, import("zod/v4/core").$strip> ? import("zod").infer<TAdditionalInput> : object)) | undefined;
149
+ args?: ((Record<string, unknown> | undefined) & (TAdditionalInput extends import("zod").ZodObject<Record<string, import("zod").ZodTypeAny<unknown, unknown, import("zod/v4/core").$ZodTypeInternals<unknown, unknown>>>, import("zod/v4/core").$strip> ? import("zod").infer<TAdditionalInput> : object)) | undefined;
154
150
  };
155
151
  items: TItem[];
156
152
  }) => TNode[] | Promise<TNode[]>) | undefined;
@@ -163,51 +159,46 @@ declare function createDrizzleFate<Context, Procedure extends ProcedureLike>({
163
159
  };
164
160
  } ? TContext : unknown;
165
161
  cursor?: string;
166
- direction: "forward" | "backward";
162
+ direction: 'forward' | 'backward';
167
163
  input: {
168
- select: string[];
169
164
  args?: Record<string, unknown> | undefined;
165
+ select: string[];
170
166
  } & {
171
- args?: ((Record<string, unknown> | undefined) & (TAdditionalInput extends import("zod").ZodObject<Record<string, import("zod").ZodType<unknown, unknown, import("zod/v4/core").$ZodTypeInternals<unknown, unknown>>>, import("zod/v4/core").$strip> ? import("zod").infer<TAdditionalInput> : object)) | undefined;
167
+ args?: ((Record<string, unknown> | undefined) & (TAdditionalInput extends import("zod").ZodObject<Record<string, import("zod").ZodTypeAny<unknown, unknown, import("zod/v4/core").$ZodTypeInternals<unknown, unknown>>>, import("zod/v4/core").$strip> ? import("zod").infer<TAdditionalInput> : object)) | undefined;
172
168
  };
173
169
  skip?: number;
174
170
  take: number;
175
171
  }) => Promise<TItem[]>;
176
172
  }) => QueryProcedure<{
177
173
  input: {
178
- select: string[];
179
174
  args?: Record<string, unknown> | undefined;
175
+ select: string[];
180
176
  } & {
181
- args?: ((Record<string, unknown> | undefined) & (TAdditionalInput extends import("zod").ZodObject<Record<string, import("zod").ZodType<unknown, unknown, import("zod/v4/core").$ZodTypeInternals<unknown, unknown>>>, import("zod/v4/core").$strip> ? import("zod").infer<TAdditionalInput> : object)) | undefined;
177
+ args?: ((Record<string, unknown> | undefined) & (TAdditionalInput extends import("zod").ZodObject<Record<string, import("zod").ZodTypeAny<unknown, unknown, import("zod/v4/core").$ZodTypeInternals<unknown, unknown>>>, import("zod/v4/core").$strip> ? import("zod").infer<TAdditionalInput> : object)) | undefined;
182
178
  };
183
179
  meta: unknown;
184
180
  output: ConnectionResult<TNode>;
185
181
  }>;
186
- createPlan: <Item extends AnyRecord = AnyRecord>({
187
- args,
188
- ctx,
189
- select,
190
- view
191
- }: SourceInput & {
182
+ createPlan: <Item extends AnyRecord = AnyRecord>({ args, ctx, select, view }: SourceInput & {
192
183
  ctx?: Context;
193
184
  view: ViewTarget<Item>;
194
185
  }) => {
195
- root: SourcePlanNode<unknown, unknown>;
196
- source: SourceDefinition<Item, unknown>;
197
186
  args: AnyRecord | undefined;
198
187
  ctx: Context | undefined;
199
188
  resolve: (item: Item) => Promise<AnyRecord>;
200
189
  resolveMany: (items: Array<AnyRecord>) => Promise<Array<AnyRecord>>;
201
190
  selectedPaths: Set<string>;
202
191
  view: DataView<Item>;
192
+ root: SourcePlanNode<unknown, unknown>;
193
+ source: SourceDefinition<Item, unknown>;
203
194
  };
204
195
  procedures: <Item extends AnyRecord, ById extends boolean | undefined = undefined, List extends boolean | ListConfig | undefined = undefined>(input: ViewProcedureInput<Item, ById, List>) => (ById extends false ? Record<never, never> : {
205
196
  byId: ReturnType<ReturnType<Procedure["input"]>["query"]>;
206
197
  }) & (List extends false ? Record<never, never> : {
207
198
  list: QueryProcedure<{
208
199
  input: {
209
- select: string[];
210
200
  args?: Record<string, unknown> | undefined;
201
+ select: string[];
211
202
  } & {
212
203
  args?: Record<string, unknown> | (Record<string, unknown> & object) | undefined;
213
204
  };
@@ -215,90 +206,30 @@ declare function createDrizzleFate<Context, Procedure extends ProcedureLike>({
215
206
  output: ConnectionResult<unknown>;
216
207
  }>;
217
208
  });
218
- resolveById: <Item extends AnyRecord = AnyRecord>({
219
- ctx,
220
- extra,
221
- id,
222
- input,
223
- view
224
- }: {
209
+ resolveById: <Item extends AnyRecord = AnyRecord>({ ctx, extra, id, input, view }: {
225
210
  ctx: Context;
226
211
  extra?: DrizzleQueryExtra;
227
212
  id: string;
228
213
  input: SourceInput;
229
214
  view: ViewTarget<Item>;
230
215
  }) => Promise<AnyRecord | null>;
231
- resolveByIds: <Item extends AnyRecord = AnyRecord>({
232
- ctx,
233
- extra,
234
- ids,
235
- input,
236
- view
237
- }: {
216
+ resolveByIds: <Item extends AnyRecord = AnyRecord>({ ctx, extra, ids, input, view }: {
238
217
  ctx: Context;
239
218
  extra?: DrizzleQueryExtra;
240
219
  ids: Array<string>;
241
220
  input: SourceInput;
242
221
  view: ViewTarget<Item>;
243
222
  }) => Promise<AnyRecord[]>;
244
- resolveConnection: <Item extends AnyRecord = AnyRecord>({
245
- ctx,
246
- cursor,
247
- direction,
248
- extra,
249
- input,
250
- skip,
251
- take,
252
- view
253
- }: {
223
+ resolveConnection: <Item extends AnyRecord = AnyRecord>({ ctx, cursor, direction, extra, input, skip, take, view }: {
254
224
  ctx: Context;
255
225
  cursor?: string;
256
- direction: "backward" | "forward";
226
+ direction: 'backward' | 'forward';
257
227
  extra?: DrizzleQueryExtra;
258
228
  input: SourceInput;
259
229
  skip?: number;
260
230
  take: number;
261
231
  view: ViewTarget<Item>;
262
232
  }) => Promise<AnyRecord[]>;
263
- fetchById: <Item extends AnyRecord = AnyRecord>({
264
- ctx,
265
- extra,
266
- id,
267
- plan
268
- }: {
269
- ctx?: Context | undefined;
270
- extra?: DrizzleQueryExtra;
271
- id: string;
272
- plan: SourcePlan<Item, Context>;
273
- }) => Promise<Item | null>;
274
- fetchByIds: <Item extends AnyRecord = AnyRecord>({
275
- ctx,
276
- extra,
277
- ids,
278
- plan
279
- }: {
280
- ctx?: Context | undefined;
281
- extra?: DrizzleQueryExtra;
282
- ids: Array<string>;
283
- plan: SourcePlan<Item, Context>;
284
- }) => Promise<Item[]>;
285
- fetchConnection: <Item extends AnyRecord = AnyRecord>({
286
- ctx,
287
- cursor,
288
- direction,
289
- extra,
290
- plan,
291
- take
292
- }: {
293
- ctx?: Context | undefined;
294
- cursor?: string;
295
- direction: "backward" | "forward";
296
- extra?: DrizzleQueryExtra;
297
- plan: SourcePlan<Item, Context>;
298
- take: number;
299
- }) => Promise<Item[]>;
300
- getSource: <Item extends AnyRecord = AnyRecord>(target: SourceTarget<Item>) => SourceDefinition<Item, unknown>;
301
- registry: SourceRegistry<Context>;
302
233
  };
303
234
  //#endregion
304
235
  export { DrizzleManyToManyConfig, DrizzleManyToManyInput, DrizzleQueryExtra, DrizzleSourceAdapter, DrizzleViewConfig, createDrizzleFate, createDrizzleSourceAdapter, createDrizzleSourceRegistry };
@@ -1,5 +1,5 @@
1
1
  import { t as isRecord } from "../record-B07VwXd-.mjs";
2
- import { O as withConnection, S as isDataView, c as resolveSourceConnection, d as createSourceDefinitions, f as createSourcePlan, g as attachComputedState, i as createSourceRegistry, l as collectDataViewConfigs, o as resolveSourceById, p as getDataViewSourceConfig, s as resolveSourceByIds, t as bindSourceProcedures } from "../sourceRouter-DSaADXSf.mjs";
2
+ import { S as isDataView, c as resolveSourceConnection, d as createSourceDefinitions, f as createSourcePlan, g as attachComputedState, i as createSourceRegistry, k as withConnection, l as collectDataViewConfigs, o as resolveSourceById, p as getDataViewSourceConfig, s as resolveSourceByIds, t as bindSourceProcedures } from "../sourceRouter-51POBlEE.mjs";
3
3
  import { Many, and, asc, createTableRelationsHelpers, desc, eq, extractTablesRelationalConfig, getTableColumns, gt, inArray, is, isTable, lt, normalizeRelation, or, sql } from "drizzle-orm";
4
4
  //#region src/server/drizzle.ts
5
5
  /**
@@ -649,7 +649,7 @@ function createDrizzleSourceAdapter({ db, nestedPaginationConcurrency, schema, v
649
649
  ctx,
650
650
  extraFields: extra?.extraFields,
651
651
  node: plan.root,
652
- where: inArray(getColumn(config.columns, plan.source.id), [...new Set(ids)])
652
+ where: and(inArray(getColumn(config.columns, plan.source.id), [...new Set(ids)]), extra?.where)
653
653
  });
654
654
  return reorderByIds(ids, await hydrateRows(rows, plan.root, ctx));
655
655
  };