@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.
- package/README.md +326 -0
- package/docs/api/classes/FateClient.md +51 -199
- package/docs/api/functions/clientRoot.md +1 -1
- package/docs/api/functions/createClient.md +1 -1
- package/docs/api/functions/createGraphQLTransport.md +1 -1
- package/docs/api/functions/createHTTPTransport.md +1 -1
- package/docs/api/functions/createTRPCTransport.md +5 -1
- package/docs/api/functions/defer.md +1 -1
- package/docs/api/functions/getDeferredMetadata.md +1 -1
- package/docs/api/functions/getListEntries.md +1 -1
- package/docs/api/functions/getSelectionPlan.md +1 -1
- package/docs/api/functions/graphqlMutation.md +1 -1
- package/docs/api/functions/isDeferred.md +1 -1
- package/docs/api/functions/isRecord.md +1 -1
- package/docs/api/functions/isViewTag.md +1 -1
- package/docs/api/functions/liveConnectionTopic.md +1 -1
- package/docs/api/functions/liveEntityTopic.md +1 -1
- package/docs/api/functions/liveGlobalConnectionTopic.md +1 -1
- package/docs/api/functions/mutation.md +1 -1
- package/docs/api/functions/toEntityId.md +1 -1
- package/docs/api/functions/view.md +1 -1
- package/docs/api/index.md +4 -1
- package/docs/api/interfaces/FateThenable.md +3 -3
- package/docs/api/interfaces/Persistence.md +23 -0
- package/docs/api/interfaces/PersistenceSession.md +109 -0
- package/docs/api/interfaces/Transport.md +46 -7
- package/docs/api/server/classes/FateRequestError.md +5 -5
- package/docs/api/server/drizzle/functions/createDrizzleFate.md +1 -1
- package/docs/api/server/drizzle/functions/createDrizzleSourceAdapter.md +1 -1
- package/docs/api/server/drizzle/functions/createDrizzleSourceRegistry.md +1 -1
- package/docs/api/server/drizzle/type-aliases/DrizzleManyToManyConfig.md +1 -1
- package/docs/api/server/drizzle/type-aliases/DrizzleManyToManyInput.md +1 -1
- package/docs/api/server/drizzle/type-aliases/DrizzleQueryExtra.md +3 -3
- package/docs/api/server/drizzle/type-aliases/DrizzleSourceAdapter.md +9 -9
- package/docs/api/server/drizzle/type-aliases/DrizzleViewConfig.md +1 -1
- package/docs/api/server/functions/bindSourceProcedures.md +1 -1
- package/docs/api/server/functions/computed.md +1 -1
- package/docs/api/server/functions/count.md +1 -1
- package/docs/api/server/functions/createFateFetchHandler.md +1 -1
- package/docs/api/server/functions/createFateServer.md +1 -1
- package/docs/api/server/functions/createHonoFateHandler.md +1 -1
- package/docs/api/server/functions/createLiveEventBus.md +1 -1
- package/docs/api/server/functions/createNestedSourcePlan.md +1 -1
- package/docs/api/server/functions/createResolver.md +1 -1
- package/docs/api/server/functions/createSourcePlan.md +1 -1
- package/docs/api/server/functions/createSourceProcedures.md +1 -1
- package/docs/api/server/functions/dataView.md +1 -1
- package/docs/api/server/functions/field.md +1 -1
- package/docs/api/server/functions/getNestedSelection.md +1 -1
- package/docs/api/server/functions/getScopedArgs.md +1 -1
- package/docs/api/server/functions/hasNestedSelection.md +1 -1
- package/docs/api/server/functions/list.md +1 -1
- package/docs/api/server/functions/refetchSourceById.md +1 -1
- package/docs/api/server/functions/resolveSourceById.md +1 -1
- package/docs/api/server/functions/resolveSourceByIds.md +1 -1
- package/docs/api/server/functions/resolveSourceConnection.md +1 -1
- package/docs/api/server/functions/resolver.md +1 -1
- package/docs/api/server/functions/toPrismaSelect.md +1 -1
- package/docs/api/server/functions/withConnection.md +1 -1
- package/docs/api/server/prisma/functions/createPrismaFate.md +1 -1
- package/docs/api/server/prisma/functions/createPrismaSourceAdapter.md +1 -1
- package/docs/api/server/prisma/functions/createPrismaSourceRegistry.md +1 -1
- package/docs/api/server/prisma/functions/prismaConnectionArgs.md +1 -1
- package/docs/api/server/prisma/type-aliases/PrismaDelegate.md +4 -4
- package/docs/api/server/prisma/type-aliases/PrismaQueryExtra.md +1 -1
- package/docs/api/server/prisma/type-aliases/PrismaSourceAdapter.md +9 -9
- package/docs/api/server/prisma/type-aliases/PrismaViewConfig.md +1 -1
- package/docs/api/server/type-aliases/ComputedField.md +5 -5
- package/docs/api/server/type-aliases/ComputedSelection.md +1 -1
- package/docs/api/server/type-aliases/ConnectionItem.md +3 -3
- package/docs/api/server/type-aliases/ConnectionPagination.md +5 -5
- package/docs/api/server/type-aliases/ConnectionResult.md +3 -3
- package/docs/api/server/type-aliases/CountSelection.md +4 -4
- package/docs/api/server/type-aliases/CountWhere.md +1 -1
- package/docs/api/server/type-aliases/DataViewListOptions.md +2 -2
- package/docs/api/server/type-aliases/DataViewOrderBy.md +1 -1
- package/docs/api/server/type-aliases/DataViewOrderDirection.md +1 -1
- package/docs/api/server/type-aliases/DataViewResult.md +1 -1
- package/docs/api/server/type-aliases/Entity.md +1 -1
- package/docs/api/server/type-aliases/FateServer.md +5 -5
- package/docs/api/server/type-aliases/FateServerManifest.md +1 -1
- package/docs/api/server/type-aliases/FieldSelection.md +3 -3
- package/docs/api/server/type-aliases/LiveConnectionEventType.md +1 -1
- package/docs/api/server/type-aliases/LiveConnectionSourceEvent.md +1 -1
- package/docs/api/server/type-aliases/LiveEventBus.md +1 -1
- package/docs/api/server/type-aliases/LiveEventType.md +1 -1
- package/docs/api/server/type-aliases/LiveSourceEvent.md +1 -1
- package/docs/api/server/type-aliases/NativeFateAPI.md +4 -4
- package/docs/api/server/type-aliases/OrderDirection.md +1 -1
- package/docs/api/server/type-aliases/SourceConfig.md +6 -6
- package/docs/api/server/type-aliases/SourceDefinition.md +6 -6
- package/docs/api/server/type-aliases/SourceOrder.md +1 -1
- package/docs/api/server/type-aliases/SourceOrderField.md +3 -3
- package/docs/api/server/type-aliases/SourcePlan.md +1 -1
- package/docs/api/server/type-aliases/SourcePlanNode.md +1 -1
- package/docs/api/server/type-aliases/SourceRegistry.md +1 -1
- package/docs/api/server/type-aliases/SourceRelation.md +1 -1
- package/docs/api/server/type-aliases/SourceRelationConfig.md +1 -1
- package/docs/api/server/variables/byIdInput.md +1 -1
- package/docs/api/server/variables/connectionArgs.md +1 -1
- package/docs/api/type-aliases/ConnectionMetadata.md +1 -1
- package/docs/api/type-aliases/ConnectionRef.md +1 -1
- package/docs/api/type-aliases/Deferred.md +1 -1
- package/docs/api/type-aliases/DeferredMetadata.md +1 -1
- package/docs/api/type-aliases/DeferredSelection.md +1 -1
- package/docs/api/type-aliases/DeferredSnapshot.md +1 -1
- package/docs/api/type-aliases/Entity.md +2 -2
- package/docs/api/type-aliases/EntityId.md +1 -1
- package/docs/api/type-aliases/FateDehydratedState.md +1 -1
- package/docs/api/type-aliases/FateLiveConnectionEvent.md +1 -1
- package/docs/api/type-aliases/FateLiveEvent.md +1 -1
- package/docs/api/type-aliases/FateMutations.md +1 -1
- package/docs/api/type-aliases/FateOperation.md +2 -2
- package/docs/api/type-aliases/FateProtocolRequest.md +1 -1
- package/docs/api/type-aliases/FateProtocolResponse.md +1 -1
- package/docs/api/type-aliases/FateRecord.md +1 -1
- package/docs/api/type-aliases/FateRoots.md +1 -1
- package/docs/api/type-aliases/GraphQLMutationDefinition.md +1 -1
- package/docs/api/type-aliases/GraphQLMutationInput.md +1 -1
- package/docs/api/type-aliases/GraphQLMutationMap.md +1 -1
- package/docs/api/type-aliases/GraphQLMutationOutput.md +1 -1
- package/docs/api/type-aliases/GraphQLTransportOptions.md +19 -11
- package/docs/api/type-aliases/HydrateOptions.md +1 -1
- package/docs/api/type-aliases/HydrationLimits.md +1 -1
- package/docs/api/type-aliases/InferFateAPI.md +1 -1
- package/docs/api/type-aliases/List.md +1 -1
- package/docs/api/type-aliases/ListEntry.md +1 -1
- package/docs/api/type-aliases/ListItem.md +1 -1
- package/docs/api/type-aliases/Mask.md +1 -1
- package/docs/api/type-aliases/MutationDefinition.md +1 -1
- package/docs/api/type-aliases/MutationEntity.md +1 -1
- package/docs/api/type-aliases/MutationIdentifier.md +1 -1
- package/docs/api/type-aliases/MutationIdentity.md +7 -0
- package/docs/api/type-aliases/MutationInput.md +1 -1
- package/docs/api/type-aliases/MutationResult.md +1 -1
- package/docs/api/type-aliases/NodesItem.md +1 -1
- package/docs/api/type-aliases/Pagination.md +5 -5
- package/docs/api/type-aliases/PersistenceSnapshot.md +5 -0
- package/docs/api/type-aliases/Request.md +1 -1
- package/docs/api/type-aliases/RequestMode.md +1 -1
- package/docs/api/type-aliases/RequestOptions.md +2 -2
- package/docs/api/type-aliases/RequestResult.md +1 -1
- package/docs/api/type-aliases/Selection.md +1 -1
- package/docs/api/type-aliases/TypeConfig.md +4 -4
- package/docs/api/type-aliases/View.md +1 -1
- package/docs/api/type-aliases/ViewData.md +1 -1
- package/docs/api/type-aliases/ViewEntity.md +1 -1
- package/docs/api/type-aliases/ViewEntityName.md +1 -1
- package/docs/api/type-aliases/ViewRef.md +1 -1
- package/docs/api/type-aliases/ViewSelection.md +1 -1
- package/docs/api/type-aliases/ViewSnapshot.md +1 -1
- package/docs/api/type-aliases/ViewTag.md +1 -1
- package/docs/api/variables/ConnectionTag.md +1 -1
- package/docs/api/variables/DeferTag.md +1 -1
- package/docs/api/variables/DeferredTag.md +1 -1
- package/docs/guide/getting-started.md +2 -0
- package/docs/guide/persistence.md +323 -0
- package/lib/{liveTopics-uVP0LG-Q.mjs → args-CRLIRl_v.mjs} +1 -59
- package/lib/cli.d.mts +1 -1
- package/lib/{executor-C8HNogYG.d.mts → executor-DoiTBiVv.d.mts} +18 -65
- package/lib/{graphqlTransport-DskuXeUP.d.mts → graphqlTransport-DGLYyRxL.d.mts} +4 -14
- package/lib/{graphqlTransport-DSBVS2Fq.mjs → graphqlTransport-DmheG3AO.mjs} +3 -2
- package/lib/graphqlTransport.d.mts +1 -1
- package/lib/graphqlTransport.mjs +1 -1
- package/lib/hydration-DPZRJgnu.mjs +273 -0
- package/lib/idempotency-types-CqA-BFpn.d.mts +15 -0
- package/lib/idempotency.d.mts +26 -0
- package/lib/idempotency.mjs +34 -0
- package/lib/index.d.mts +6 -15
- package/lib/index.mjs +560 -1774
- package/lib/{list-sI2UPhHc.d.mts → list-BRT1VtiT.d.mts} +1 -2
- package/lib/list.d.mts +1 -1
- package/lib/liveTopics-DuFkDZQm.mjs +17 -0
- package/lib/persistence.d.mts +38 -0
- package/lib/persistence.mjs +1529 -0
- package/lib/protocol-DS5sf6sd.mjs +44 -0
- package/lib/{record-CZyyeLa3.d.mts → record-DITM4zb_.d.mts} +14 -19
- package/lib/server/drizzle.d.mts +45 -114
- package/lib/server/drizzle.mjs +2 -2
- package/lib/server/prisma.d.mts +52 -127
- package/lib/server/prisma.mjs +9 -8
- package/lib/server.d.mts +4 -16
- package/lib/server.mjs +21 -35
- package/lib/sortObjectKeys-yhuitEQZ.mjs +9 -0
- package/lib/{sourceRouter-DSaADXSf.mjs → sourceRouter-51POBlEE.mjs} +9 -6
- package/lib/store-CeatPJeK.mjs +1350 -0
- package/lib/{transport-DhaVVq4P.d.mts → transport-DqjhjLfC.d.mts} +672 -517
- package/lib/vite.d.mts +0 -1
- package/lib/vite.mjs +19 -11
- package/package.json +15 -5
- 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-
|
|
2
|
-
import {
|
|
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
|
-
|
|
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;
|
package/lib/server/drizzle.d.mts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import {
|
|
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-
|
|
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
|
-
|
|
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").
|
|
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:
|
|
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").
|
|
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").
|
|
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:
|
|
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 };
|
package/lib/server/drizzle.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as isRecord } from "../record-B07VwXd-.mjs";
|
|
2
|
-
import {
|
|
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
|
};
|