@nkzw/fate 0.1.3 → 1.0.0-rc.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 (170) hide show
  1. package/README.md +810 -129
  2. package/docs/api/classes/FateClient.md +832 -0
  3. package/docs/api/functions/clientRoot.md +27 -0
  4. package/docs/api/functions/createClient.md +21 -0
  5. package/docs/api/functions/createHTTPTransport.md +51 -0
  6. package/docs/api/functions/createTRPCTransport.md +46 -0
  7. package/docs/api/functions/getListEntries.md +15 -0
  8. package/docs/api/functions/getSelectionPlan.md +36 -0
  9. package/docs/api/functions/isRecord.md +15 -0
  10. package/docs/api/functions/isViewTag.md +17 -0
  11. package/docs/api/functions/liveConnectionTopic.md +19 -0
  12. package/docs/api/functions/liveEntityTopic.md +19 -0
  13. package/docs/api/functions/liveGlobalConnectionTopic.md +15 -0
  14. package/docs/api/functions/mutation.md +32 -0
  15. package/docs/api/functions/toEntityId.md +21 -0
  16. package/docs/api/functions/view.md +26 -0
  17. package/docs/api/index.md +81 -0
  18. package/docs/api/interfaces/FateThenable.md +31 -0
  19. package/docs/api/interfaces/Transport.md +199 -0
  20. package/docs/api/server/classes/FateRequestError.md +67 -0
  21. package/docs/api/server/drizzle/functions/createDrizzleFate.md +431 -0
  22. package/docs/api/server/drizzle/functions/createDrizzleSourceAdapter.md +21 -0
  23. package/docs/api/server/drizzle/functions/createDrizzleSourceRegistry.md +21 -0
  24. package/docs/api/server/drizzle/index.md +23 -0
  25. package/docs/api/server/drizzle/type-aliases/DrizzleManyToManyConfig.md +15 -0
  26. package/docs/api/server/drizzle/type-aliases/DrizzleManyToManyInput.md +5 -0
  27. package/docs/api/server/drizzle/type-aliases/DrizzleQueryExtra.md +21 -0
  28. package/docs/api/server/drizzle/type-aliases/DrizzleSourceAdapter.md +337 -0
  29. package/docs/api/server/drizzle/type-aliases/DrizzleViewConfig.md +29 -0
  30. package/docs/api/server/functions/bindSourceProcedures.md +32 -0
  31. package/docs/api/server/functions/computed.md +43 -0
  32. package/docs/api/server/functions/count.md +21 -0
  33. package/docs/api/server/functions/createFateFetchHandler.md +21 -0
  34. package/docs/api/server/functions/createFateServer.md +41 -0
  35. package/docs/api/server/functions/createHonoFateHandler.md +21 -0
  36. package/docs/api/server/functions/createLiveEventBus.md +17 -0
  37. package/docs/api/server/functions/createNestedSourcePlan.md +103 -0
  38. package/docs/api/server/functions/createResolver.md +74 -0
  39. package/docs/api/server/functions/createSourcePlan.md +95 -0
  40. package/docs/api/server/functions/createSourceProcedures.md +46 -0
  41. package/docs/api/server/functions/dataView.md +32 -0
  42. package/docs/api/server/functions/field.md +15 -0
  43. package/docs/api/server/functions/getNestedSelection.md +19 -0
  44. package/docs/api/server/functions/getScopedArgs.md +21 -0
  45. package/docs/api/server/functions/hasNestedSelection.md +19 -0
  46. package/docs/api/server/functions/list.md +28 -0
  47. package/docs/api/server/functions/refetchSourceById.md +55 -0
  48. package/docs/api/server/functions/resolveSourceById.md +55 -0
  49. package/docs/api/server/functions/resolveSourceByIds.md +55 -0
  50. package/docs/api/server/functions/resolveSourceConnection.md +67 -0
  51. package/docs/api/server/functions/resolver.md +42 -0
  52. package/docs/api/server/functions/toPrismaSelect.md +25 -0
  53. package/docs/api/server/functions/withConnection.md +24 -0
  54. package/docs/api/server/index.md +109 -0
  55. package/docs/api/server/prisma/functions/createPrismaFate.md +435 -0
  56. package/docs/api/server/prisma/functions/createPrismaSourceAdapter.md +21 -0
  57. package/docs/api/server/prisma/functions/createPrismaSourceRegistry.md +21 -0
  58. package/docs/api/server/prisma/functions/prismaConnectionArgs.md +57 -0
  59. package/docs/api/server/prisma/index.md +23 -0
  60. package/docs/api/server/prisma/type-aliases/PrismaDelegate.md +59 -0
  61. package/docs/api/server/prisma/type-aliases/PrismaQueryExtra.md +5 -0
  62. package/docs/api/server/prisma/type-aliases/PrismaSourceAdapter.md +343 -0
  63. package/docs/api/server/prisma/type-aliases/PrismaViewConfig.md +31 -0
  64. package/docs/api/server/type-aliases/ComputedField.md +55 -0
  65. package/docs/api/server/type-aliases/ComputedSelection.md +5 -0
  66. package/docs/api/server/type-aliases/ConnectionItem.md +29 -0
  67. package/docs/api/server/type-aliases/ConnectionPagination.md +39 -0
  68. package/docs/api/server/type-aliases/ConnectionResult.md +29 -0
  69. package/docs/api/server/type-aliases/CountSelection.md +29 -0
  70. package/docs/api/server/type-aliases/CountWhere.md +5 -0
  71. package/docs/api/server/type-aliases/DataViewListOptions.md +13 -0
  72. package/docs/api/server/type-aliases/DataViewOrderBy.md +5 -0
  73. package/docs/api/server/type-aliases/DataViewOrderDirection.md +5 -0
  74. package/docs/api/server/type-aliases/DataViewResult.md +11 -0
  75. package/docs/api/server/type-aliases/Entity.md +21 -0
  76. package/docs/api/server/type-aliases/FateServer.md +75 -0
  77. package/docs/api/server/type-aliases/FateServerManifest.md +5 -0
  78. package/docs/api/server/type-aliases/FieldSelection.md +21 -0
  79. package/docs/api/server/type-aliases/LiveConnectionEventType.md +5 -0
  80. package/docs/api/server/type-aliases/LiveConnectionSourceEvent.md +5 -0
  81. package/docs/api/server/type-aliases/LiveEventBus.md +5 -0
  82. package/docs/api/server/type-aliases/LiveEventType.md +5 -0
  83. package/docs/api/server/type-aliases/LiveSourceEvent.md +5 -0
  84. package/docs/api/server/type-aliases/NativeFateAPI.md +47 -0
  85. package/docs/api/server/type-aliases/OrderDirection.md +5 -0
  86. package/docs/api/server/type-aliases/SourceConfig.md +55 -0
  87. package/docs/api/server/type-aliases/SourceDefinition.md +55 -0
  88. package/docs/api/server/type-aliases/SourceOrder.md +5 -0
  89. package/docs/api/server/type-aliases/SourceOrderField.md +21 -0
  90. package/docs/api/server/type-aliases/SourcePlan.md +29 -0
  91. package/docs/api/server/type-aliases/SourcePlanNode.md +29 -0
  92. package/docs/api/server/type-aliases/SourceRegistry.md +11 -0
  93. package/docs/api/server/type-aliases/SourceRelation.md +15 -0
  94. package/docs/api/server/type-aliases/SourceRelationConfig.md +23 -0
  95. package/docs/api/server/variables/byIdInput.md +5 -0
  96. package/docs/api/server/variables/connectionArgs.md +7 -0
  97. package/docs/api/type-aliases/ConnectionMetadata.md +7 -0
  98. package/docs/api/type-aliases/ConnectionRef.md +13 -0
  99. package/docs/api/type-aliases/Entity.md +15 -0
  100. package/docs/api/type-aliases/EntityId.md +7 -0
  101. package/docs/api/type-aliases/FateLiveConnectionEvent.md +5 -0
  102. package/docs/api/type-aliases/FateLiveEvent.md +5 -0
  103. package/docs/api/type-aliases/FateMutations.md +7 -0
  104. package/docs/api/type-aliases/FateOperation.md +5 -0
  105. package/docs/api/type-aliases/FateProtocolRequest.md +5 -0
  106. package/docs/api/type-aliases/FateProtocolResponse.md +5 -0
  107. package/docs/api/type-aliases/FateRecord.md +7 -0
  108. package/docs/api/type-aliases/FateRoots.md +7 -0
  109. package/docs/api/type-aliases/InferFateAPI.md +11 -0
  110. package/docs/api/type-aliases/List.md +5 -0
  111. package/docs/api/type-aliases/ListEntry.md +5 -0
  112. package/docs/api/type-aliases/ListItem.md +13 -0
  113. package/docs/api/type-aliases/Mask.md +15 -0
  114. package/docs/api/type-aliases/MutationDefinition.md +21 -0
  115. package/docs/api/type-aliases/MutationEntity.md +13 -0
  116. package/docs/api/type-aliases/MutationIdentifier.md +19 -0
  117. package/docs/api/type-aliases/MutationInput.md +13 -0
  118. package/docs/api/type-aliases/MutationResult.md +13 -0
  119. package/docs/api/type-aliases/NodesItem.md +13 -0
  120. package/docs/api/type-aliases/Pagination.md +39 -0
  121. package/docs/api/type-aliases/Request.md +7 -0
  122. package/docs/api/type-aliases/RequestMode.md +7 -0
  123. package/docs/api/type-aliases/RequestOptions.md +7 -0
  124. package/docs/api/type-aliases/RequestResult.md +18 -0
  125. package/docs/api/type-aliases/Selection.md +13 -0
  126. package/docs/api/type-aliases/Snapshot.md +7 -0
  127. package/docs/api/type-aliases/TypeConfig.md +41 -0
  128. package/docs/api/type-aliases/View.md +17 -0
  129. package/docs/api/type-aliases/ViewData.md +18 -0
  130. package/docs/api/type-aliases/ViewEntity.md +13 -0
  131. package/docs/api/type-aliases/ViewEntityName.md +13 -0
  132. package/docs/api/type-aliases/ViewRef.md +13 -0
  133. package/docs/api/type-aliases/ViewSelection.md +13 -0
  134. package/docs/api/type-aliases/ViewSnapshot.md +18 -0
  135. package/docs/api/type-aliases/ViewTag.md +7 -0
  136. package/docs/api/variables/ConnectionTag.md +7 -0
  137. package/docs/guide/actions.md +263 -0
  138. package/docs/guide/core-concepts.md +22 -0
  139. package/docs/guide/getting-started.md +57 -0
  140. package/docs/guide/list-views.md +86 -0
  141. package/docs/guide/live-views.md +245 -0
  142. package/docs/guide/requests.md +130 -0
  143. package/docs/guide/server-integration.md +630 -0
  144. package/docs/guide/views.md +278 -0
  145. package/docs/guide/void-integration.md +167 -0
  146. package/docs/index.md +4 -0
  147. package/lib/cli.mjs +17 -250
  148. package/lib/clientStub.d.mts +6 -0
  149. package/lib/clientStub.mjs +6 -0
  150. package/lib/executor-BqwHdN3n.d.mts +468 -0
  151. package/lib/index.d.mts +64 -2
  152. package/lib/index.mjs +1961 -555
  153. package/lib/list-4wRNSVgI.d.mts +10 -0
  154. package/lib/list-C_mi6GnE.mjs +16 -0
  155. package/lib/list.d.mts +2 -0
  156. package/lib/list.mjs +2 -0
  157. package/lib/liveTopics-DzNtJaBD.mjs +197 -0
  158. package/lib/{record-DnhZuvUe.mjs → record-AeZJC9fd.mjs} +1 -2
  159. package/lib/record-ENh92gyb.d.mts +315 -0
  160. package/lib/server/drizzle.d.mts +304 -0
  161. package/lib/server/drizzle.mjs +688 -0
  162. package/lib/server/prisma.d.mts +309 -0
  163. package/lib/server/prisma.mjs +345 -0
  164. package/lib/server.d.mts +82 -183
  165. package/lib/server.mjs +870 -416
  166. package/lib/sourceRouter-Bwpkr062.mjs +972 -0
  167. package/lib/{types-HECWvGpd.d.mts → types-Dz46PXr3.d.mts} +215 -63
  168. package/lib/vite.d.mts +17 -0
  169. package/lib/vite.mjs +592 -0
  170. package/package.json +44 -6
package/lib/server.d.mts CHANGED
@@ -1,200 +1,99 @@
1
- import { W as QueryProcedure, t as AnyRecord } from "./types-HECWvGpd.mjs";
1
+ import { K as AnyProcedure, t as AnyRecord$1 } from "./types-Dz46PXr3.mjs";
2
+ import { C as liveGlobalConnectionTopic, S as liveEntityTopic, _ as LiveEventBus, b as createLiveEventBus, c as FateServer, d as NativeFateAPI, f as createFateFetchHandler, g as LiveConnectionSourceEvent, h as LiveConnectionEventType, l as FateServerManifest, m as createHonoFateHandler, p as createFateServer, s as FateRequestError, t as isRecord, u as InferFateAPI, v as LiveEventType, x as liveConnectionTopic, y as LiveSourceEvent } from "./record-ENh92gyb.mjs";
3
+ import { A as DataViewListOptions, B as dataView, C as connectionArgs, D as CountSelection, E as ComputedSelection, F as FieldSelection, H as list$1, I as ViewPlan, L as computed, M as DataViewOrderDirection, N as DataViewResult, O as CountWhere, P as Entity, R as count, S as ConnectionResult, T as ComputedField, U as resolver, V as field, _ as createSourcePlan, a as resolveSourceConnection, b as ConnectionItem, c as SourceConfig, d as SourceOrderField, f as SourcePlan, g as createNestedSourcePlan, h as SourceRelationConfig, i as resolveSourceByIds, j as DataViewOrderBy, l as SourceDefinition, m as SourceRelation, n as refetchSourceById, p as SourcePlanNode, r as resolveSourceById, s as OrderDirection, t as SourceRegistry, u as SourceOrder, v as getNestedSelection, w as withConnection, x as ConnectionPagination, y as hasNestedSelection, z as createResolver } from "./executor-BqwHdN3n.mjs";
2
4
  import { z } from "zod";
3
5
 
4
- //#region src/server/dataView.d.ts
5
- declare const dataViewFieldsKey: unique symbol;
6
- type ResolverSelect<Context> = AnyRecord | ((options: {
7
- args?: AnyRecord;
8
- context?: Context;
9
- }) => AnyRecord | void);
10
- type Bivariant<Fn extends (...args: Array<any>) => unknown> = {
11
- bivariance(...args: Parameters<Fn>): ReturnType<Fn>;
12
- }['bivariance'];
13
- type ResolverResolve<Item extends AnyRecord, Result, Context> = Bivariant<(item: Item, context?: Context, args?: AnyRecord) => Promise<Result> | Result>;
14
- type ResolverAuthorize<Item extends AnyRecord, Context> = Bivariant<(item: Item, context?: Context, args?: AnyRecord) => Promise<boolean> | boolean>;
15
- /**
16
- * Field configuration for selecting and resolving a computed value on the backend.
17
- */
18
- type ResolverField<Item extends AnyRecord, Result, Context> = {
19
- authorize?: ResolverAuthorize<Item, Context>;
20
- kind: 'resolver';
21
- resolve: ResolverResolve<Item, Result, Context>;
22
- select?: ResolverSelect<Context>;
23
- };
24
- type DataField<Item extends AnyRecord> = true | DataView<AnyRecord> | ResolverField<Item, any, any>;
25
- /**
26
- * Recursively serializes resolver results for transport across the network.
27
- */
28
- type Serializable<T> = T extends Date ? string : T extends Array<infer U> ? Array<Serializable<U>> : T extends object ? { [K in keyof T]: Serializable<T[K]> } : T;
29
- /**
30
- * Server-side mirror of a view definition describing how to select and resolve
31
- * fields when fulfilling a client request.
32
- */
33
- type DataView<Item extends AnyRecord> = {
34
- fields: Record<string, DataField<Item>>;
35
- kind?: 'resolver' | 'list';
36
- typeName: string;
37
- };
38
- /**
39
- * Convenience type for declaring the fields of a server data view.
40
- */
41
- type DataViewConfig<Item extends AnyRecord> = Record<string, DataField<Item>>;
42
- /**
43
- * Declares a server data view that exposes an object's available fields to the client.
44
- *
45
- * @example
46
- * const Post = dataView<PostItem>('Post')({
47
- * id: true,
48
- * title: true,
49
- * });
50
- */
51
- declare function dataView<Item extends AnyRecord>(typeName: string): <Fields extends DataViewConfig<Item>>(fields: Fields) => DataView<Item> & {
52
- readonly [dataViewFieldsKey]: Fields;
53
- };
54
- /**
55
- * Marks a data view as a list resolver so the server can respond with
56
- * connection information.
57
- */
58
- declare const list: <Item extends AnyRecord>(view: DataView<Item>) => {
59
- kind: "list";
60
- fields: Record<string, DataField<Item>>;
61
- typeName: string;
62
- };
63
- /**
64
- * Declares a resolver field inside a data view, optionally providing a
65
- * selection for any data dependencies.
66
- */
67
- declare function resolver<Item extends AnyRecord, Result = unknown, Context = unknown>(config: {
68
- authorize?: ResolverAuthorize<Item, Context>;
69
- resolve: ResolverResolve<Item, Result, Context>;
70
- select?: ResolverSelect<Context>;
71
- }): ResolverField<Item, Result, Context>;
72
- type NonNullish<T> = Exclude<T, null | undefined>;
73
- type WithNullish<Original, Value> = null extends Original ? undefined extends Original ? Value | null | undefined : Value | null : undefined extends Original ? Value | undefined : Value;
74
- type ResolverResult<Field> = Field extends ResolverField<AnyRecord, any, any> ? Field['authorize'] extends ResolverAuthorize<any, any> ? Awaited<ReturnType<Field['resolve']>> | null : Awaited<ReturnType<Field['resolve']>> : never;
75
- type RelationResult<ItemField, V extends DataView<AnyRecord>> = NonNullish<ItemField> extends Array<unknown> ? WithNullish<ItemField, Array<RawDataViewResult<V>>> : WithNullish<ItemField, RawDataViewResult<V>>;
76
- type ViewFieldConfig<V extends DataView<AnyRecord>> = V extends {
77
- readonly [dataViewFieldsKey]: infer Fields;
78
- } ? Fields : V['fields'];
79
- type RawFieldResult<Item extends AnyRecord, Key extends PropertyKey, Field extends DataField<Item>> = Field extends true ? Key extends keyof Item ? Item[Key] : never : Field extends DataView<infer ChildItem> ? Key extends keyof Item ? RelationResult<Item[Key], DataView<ChildItem>> : never : Field extends ResolverField<Item, any, any> ? ResolverResult<Field> : never;
80
- type RawDataViewResult<V extends DataView<AnyRecord>> = V extends DataView<infer Item> ? { [K in keyof ViewFieldConfig<V>]: RawFieldResult<Item, K, ViewFieldConfig<V>[K]> } : never;
81
- type DataViewResult<V extends DataView<AnyRecord>> = Serializable<RawDataViewResult<V>>;
82
- type WithTypename<T, Name extends string> = T & {
83
- __typename: Name;
84
- };
6
+ //#region src/server/input.d.ts
7
+ declare const byIdInput: z.ZodObject<{
8
+ args: z.ZodOptional<z.ZodType<Record<string, unknown>, unknown, z.core.$ZodTypeInternals<Record<string, unknown>, unknown>>>;
9
+ ids: z.ZodArray<z.ZodString>;
10
+ select: z.ZodArray<z.ZodString>;
11
+ }, z.core.$strip>;
12
+ //#endregion
13
+ //#region src/server/prismaSelect.d.ts
14
+ type AnyRecord = Record<string, unknown>;
85
15
  /**
86
- * Resolved entity type from a data view for client use.
16
+ * Builds a Prisma `select` object from flattened selection paths and optional
17
+ * scoped args, always including the `id` field.
87
18
  */
88
- type Entity<TView extends DataView<AnyRecord>, Name extends string, Replacements extends Record<string, unknown> = Record<never, never>> = WithTypename<Omit<DataViewResult<TView>, keyof Replacements> & Replacements, Name>;
19
+ declare function toPrismaSelect<Item extends AnyRecord, Context = unknown>(plan: ViewPlan<Item, Context>): AnyRecord;
20
+ //#endregion
21
+ //#region src/server/queryArgs.d.ts
89
22
  /**
90
- * Builds a resolver that applies a client's selection to a server data view,
91
- * filtering fields, running nested resolvers, and shaping selects.
23
+ * Narrows nested args to the slice relevant for a particular selection path.
92
24
  */
93
- declare function createResolver<Item extends AnyRecord, Context = unknown>({
94
- args,
95
- ctx,
96
- select: initialSelect,
97
- view
98
- }: {
99
- args?: AnyRecord;
100
- ctx?: Context;
101
- select: Iterable<string>;
102
- view: DataView<Item>;
103
- }): {
104
- resolve: (item: Item) => Promise<AnyRecord>;
105
- resolveMany: (items: Array<AnyRecord>) => Promise<Array<AnyRecord>>;
106
- select: Record<string, unknown>;
107
- };
25
+ declare function getScopedArgs(args: AnyRecord$1 | undefined, path: string): AnyRecord$1 | undefined;
108
26
  //#endregion
109
- //#region src/server/connection.d.ts
110
- type ConnectionInput = z.infer<typeof connectionInput>;
111
- type AdditionalInputSchema = z.ZodObject<Record<string, z.ZodTypeAny>>;
112
- type ConnectionInputWithAdditional<TAdditionalInput extends AdditionalInputSchema | undefined> = ConnectionInput & {
113
- args?: ConnectionInput['args'] extends infer A ? A & (TAdditionalInput extends AdditionalInputSchema ? z.infer<TAdditionalInput> : object) : never;
27
+ //#region src/server/sourceRouter.d.ts
28
+ type ProcedureLike = {
29
+ input: (schema: any) => {
30
+ query: (resolver: (options: any) => unknown) => AnyProcedure;
31
+ };
114
32
  };
115
- type ConnectionCursor = string;
116
- /**
117
- * Connection item including the node and opaque cursor.
118
- */
119
- type ConnectionItem<TNode> = {
120
- cursor: ConnectionCursor;
121
- node: TNode;
33
+ type ConnectionProcedureLike = (options: {
34
+ defaultSize?: number;
35
+ query: (options: {
36
+ ctx: unknown;
37
+ cursor?: string;
38
+ direction: 'backward' | 'forward';
39
+ input: {
40
+ args?: Record<string, unknown>;
41
+ select: Array<string>;
42
+ };
43
+ skip?: number;
44
+ take: number;
45
+ }) => Promise<Array<AnyRecord$1>>;
46
+ }) => AnyProcedure;
47
+ type ListConfig = {
48
+ defaultSize?: number;
122
49
  };
123
- /**
124
- * Pagination metadata returned with connection lists.
125
- */
126
- type ConnectionPagination = {
127
- hasNext: boolean;
128
- hasPrevious: boolean;
129
- nextCursor?: ConnectionCursor;
130
- previousCursor?: ConnectionCursor;
50
+ type SourceProcedureOptions<Context, Item extends AnyRecord$1, Procedure extends ProcedureLike = ProcedureLike, ConnectionProcedure extends ConnectionProcedureLike | undefined = ConnectionProcedureLike | undefined> = {
51
+ byId?: boolean;
52
+ createConnectionProcedure?: ConnectionProcedure;
53
+ list?: boolean | ListConfig;
54
+ procedure: Procedure;
55
+ registry: SourceRegistry<Context>;
56
+ source: SourceDefinition<Item, unknown>;
131
57
  };
132
- /**
133
- * Connection payload that mirrors what the client expects for list fields.
134
- */
135
- type ConnectionResult<TNode> = {
136
- items: Array<ConnectionItem<TNode>>;
137
- pagination: ConnectionPagination;
58
+ type SourceProcedureFactoryOptions<Item extends AnyRecord$1, ById extends boolean | undefined = boolean | undefined, List extends boolean | ListConfig | undefined = boolean | ListConfig | undefined> = {
59
+ byId?: ById;
60
+ list?: List;
61
+ source: SourceDefinition<Item, unknown>;
138
62
  };
139
- type ProcedureLike = {
140
- input: (schema: any) => {
141
- query: (resolver: (options: any) => unknown) => unknown;
142
- };
63
+ type SourceProcedureFactoryInput<Item extends AnyRecord$1, ById extends boolean | undefined = boolean | undefined, List extends boolean | ListConfig | undefined = boolean | ListConfig | undefined> = SourceDefinition<Item, unknown> | SourceProcedureFactoryOptions<Item, ById, List>;
64
+ type SourceProcedureFactoryDefaults<Context, Procedure extends ProcedureLike, ConnectionProcedure extends ConnectionProcedureLike | undefined> = {
65
+ createConnectionProcedure?: ConnectionProcedure;
66
+ procedure: Procedure;
67
+ registry: SourceRegistry<Context>;
143
68
  };
144
- type ProcedureContext<TProcedure> = TProcedure extends {
145
- input: (schema: any) => {
146
- query: (resolver: (options: {
147
- ctx: infer TContext;
148
- }) => unknown) => unknown;
149
- };
150
- } ? TContext : unknown;
151
- type ConnectionProcedure<TInput, TOutput> = QueryProcedure<{
152
- input: TInput;
153
- meta: unknown;
154
- output: TOutput;
155
- }>;
156
- type QueryFn<TContext, TItem, TInput extends ConnectionInput> = (options: {
157
- ctx: TContext;
158
- cursor?: ConnectionCursor;
159
- direction: 'forward' | 'backward';
160
- input: TInput;
161
- skip?: number;
162
- take: number;
163
- }) => Promise<Array<TItem>>;
164
- type MapFn<TContext, TItem, TNode, TInput extends ConnectionInput> = (options: {
165
- ctx: TContext;
166
- input: TInput;
167
- items: Array<TItem>;
168
- }) => Promise<Array<TNode>> | Array<TNode>;
69
+ type ProcedureResult<Procedure extends ProcedureLike> = ReturnType<ReturnType<Procedure['input']>['query']>;
70
+ type ConnectionProcedureResult<ConnectionProcedure extends ConnectionProcedureLike | undefined> = ConnectionProcedure extends ConnectionProcedureLike ? ReturnType<ConnectionProcedure> : never;
71
+ type SourceProcedureResult<ById extends boolean | undefined, List extends boolean | ListConfig | undefined, Procedure extends ProcedureLike, ConnectionProcedure extends ConnectionProcedureLike | undefined> = (ById extends false ? Record<never, never> : {
72
+ byId: ProcedureResult<Procedure>;
73
+ }) & (List extends false ? Record<never, never> : {
74
+ list: ConnectionProcedureResult<ConnectionProcedure>;
75
+ });
169
76
  /**
170
- * Zod schema for connection args (`after`, `before`, `first`, `last`, etc.).
171
- */
172
- declare const connectionArgs: z.ZodOptional<z.ZodType<Record<string, unknown>, unknown, z.core.$ZodTypeInternals<Record<string, unknown>, unknown>>>;
173
- declare const connectionInput: z.ZodObject<{
174
- args: z.ZodOptional<z.ZodType<Record<string, unknown>, unknown, z.core.$ZodTypeInternals<Record<string, unknown>, unknown>>>;
175
- select: z.ZodArray<z.ZodString>;
176
- }, z.core.$strict>;
177
- /**
178
- * Converts an array of nodes into a list view connection result the client
179
- * can normalize.
77
+ * Creates standard `byId` and `list` procedures for a Fate source.
78
+ *
79
+ * Use this when a router also has custom mutations or custom queries and you
80
+ * want to spread the generated source procedures into that router.
180
81
  */
82
+ declare function createSourceProcedures<Context, Item extends AnyRecord$1, Procedure extends ProcedureLike, ConnectionProcedure extends ConnectionProcedureLike | undefined = ConnectionProcedureLike | undefined, ById extends boolean | undefined = undefined, List extends boolean | ListConfig | undefined = undefined>({
83
+ byId,
84
+ createConnectionProcedure,
85
+ list,
86
+ procedure,
87
+ registry,
88
+ source
89
+ }: SourceProcedureOptions<Context, Item, Procedure, ConnectionProcedure> & {
90
+ byId?: ById;
91
+ list?: List;
92
+ }): SourceProcedureResult<ById, List, Procedure, ConnectionProcedure>;
181
93
  /**
182
- * Wraps a tRPC procedure to handle cursor-based pagination with consistent
183
- * connection semantics.
94
+ * Binds the app-specific tRPC pieces once and returns a compact helper for
95
+ * source procedures.
184
96
  */
185
- declare function withConnection<TProcedure extends ProcedureLike>(procedure: TProcedure): <TItem, TNode = TItem, TAdditionalInput extends AdditionalInputSchema | undefined = undefined>(options: {
186
- defaultSize?: number;
187
- getCursor?: (node: TNode) => ConnectionCursor;
188
- input?: TAdditionalInput;
189
- map?: MapFn<ProcedureContext<TProcedure>, TItem, TNode, ConnectionInputWithAdditional<TAdditionalInput>>;
190
- query: QueryFn<ProcedureContext<TProcedure>, TItem, ConnectionInputWithAdditional<TAdditionalInput>>;
191
- }) => ConnectionProcedure<ConnectionInputWithAdditional<TAdditionalInput>, ConnectionResult<TNode>>;
192
- //#endregion
193
- //#region src/server/input.d.ts
194
- declare const byIdInput: z.ZodObject<{
195
- args: z.ZodOptional<z.ZodType<Record<string, unknown>, unknown, z.core.$ZodTypeInternals<Record<string, unknown>, unknown>>>;
196
- ids: z.ZodArray<z.ZodString>;
197
- select: z.ZodArray<z.ZodString>;
198
- }, z.core.$strip>;
97
+ declare function bindSourceProcedures<Context, Procedure extends ProcedureLike, ConnectionProcedure extends ConnectionProcedureLike | undefined = ConnectionProcedureLike | undefined>(defaults: SourceProcedureFactoryDefaults<Context, Procedure, ConnectionProcedure>): <Item extends AnyRecord$1, ById extends boolean | undefined = undefined, List extends boolean | ListConfig | undefined = undefined>(input: SourceProcedureFactoryInput<Item, ById, List>) => SourceProcedureResult<ById, List, Procedure, ConnectionProcedure>;
199
98
  //#endregion
200
- export { type Entity, byIdInput, connectionArgs, createResolver, dataView, list, resolver, withConnection };
99
+ export { type ComputedField, type ComputedSelection, type ConnectionItem, type ConnectionPagination, type ConnectionResult, type CountSelection, type CountWhere, type DataViewListOptions, type DataViewOrderBy, type DataViewOrderDirection, type DataViewResult, type Entity, FateRequestError, type FateServer, type FateServerManifest, type FieldSelection, type InferFateAPI, type LiveConnectionEventType, type LiveConnectionSourceEvent, type LiveEventBus, type LiveEventType, type LiveSourceEvent, type NativeFateAPI, type OrderDirection, type SourceConfig, type SourceDefinition, type SourceOrder, type SourceOrderField, type SourcePlan, type SourcePlanNode, type SourceRegistry, type SourceRelation, type SourceRelationConfig, bindSourceProcedures, byIdInput, computed, connectionArgs, count, createFateFetchHandler, createFateServer, createHonoFateHandler, createLiveEventBus, createNestedSourcePlan, createResolver, createSourcePlan, createSourceProcedures, dataView, field, getNestedSelection, getScopedArgs, hasNestedSelection, isRecord, list$1 as list, liveConnectionTopic, liveEntityTopic, liveGlobalConnectionTopic, refetchSourceById, resolveSourceById, resolveSourceByIds, resolveSourceConnection, resolver, toPrismaSelect, withConnection };