appflare 0.2.48 → 0.2.49

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 (139) hide show
  1. package/Documentation.md +898 -898
  2. package/cli/commands/index.ts +247 -247
  3. package/cli/generate.ts +360 -360
  4. package/cli/index.ts +120 -120
  5. package/cli/load-config.ts +184 -184
  6. package/cli/schema-compiler.ts +1366 -1366
  7. package/cli/templates/auth/README.md +156 -156
  8. package/cli/templates/auth/config.ts +61 -61
  9. package/cli/templates/auth/route-config.ts +1 -1
  10. package/cli/templates/auth/route-handler.ts +1 -1
  11. package/cli/templates/auth/route-request-utils.ts +5 -5
  12. package/cli/templates/auth/route.config.ts +18 -18
  13. package/cli/templates/auth/route.handler.ts +18 -18
  14. package/cli/templates/auth/route.request-utils.ts +55 -55
  15. package/cli/templates/auth/route.ts +14 -14
  16. package/cli/templates/core/README.md +266 -266
  17. package/cli/templates/core/app-creation.ts +19 -19
  18. package/cli/templates/core/client/appflare.ts +112 -112
  19. package/cli/templates/core/client/handlers/index.ts +763 -763
  20. package/cli/templates/core/client/handlers.ts +1 -1
  21. package/cli/templates/core/client/index.ts +7 -7
  22. package/cli/templates/core/client/storage.ts +195 -195
  23. package/cli/templates/core/client/types.ts +187 -187
  24. package/cli/templates/core/client-modules/appflare.ts +1 -1
  25. package/cli/templates/core/client-modules/handlers.ts +1 -1
  26. package/cli/templates/core/client-modules/index.ts +1 -1
  27. package/cli/templates/core/client-modules/storage.ts +1 -1
  28. package/cli/templates/core/client-modules/types.ts +1 -1
  29. package/cli/templates/core/client.artifacts.ts +39 -39
  30. package/cli/templates/core/client.ts +4 -4
  31. package/cli/templates/core/drizzle.ts +15 -15
  32. package/cli/templates/core/export.ts +14 -14
  33. package/cli/templates/core/handlers.route.ts +24 -24
  34. package/cli/templates/core/handlers.ts +1 -1
  35. package/cli/templates/core/imports.ts +9 -9
  36. package/cli/templates/core/server.ts +38 -38
  37. package/cli/templates/core/types.ts +6 -6
  38. package/cli/templates/core/wrangler.ts +109 -109
  39. package/cli/templates/dashboard/builders/functions/index.ts +17 -17
  40. package/cli/templates/dashboard/builders/functions/render-page/header.ts +20 -20
  41. package/cli/templates/dashboard/builders/functions/render-page/index.ts +33 -33
  42. package/cli/templates/dashboard/builders/functions/render-page/request-panel.ts +271 -271
  43. package/cli/templates/dashboard/builders/functions/render-page/result-panel.ts +85 -85
  44. package/cli/templates/dashboard/builders/functions/render-page/scripts.ts +703 -703
  45. package/cli/templates/dashboard/builders/functions/tree-builder.ts +47 -47
  46. package/cli/templates/dashboard/builders/navigation.ts +155 -155
  47. package/cli/templates/dashboard/builders/storage/index.ts +13 -13
  48. package/cli/templates/dashboard/builders/storage/routes/create-directory-route.ts +29 -29
  49. package/cli/templates/dashboard/builders/storage/routes/delete-route.ts +18 -18
  50. package/cli/templates/dashboard/builders/storage/routes/download-route.ts +23 -23
  51. package/cli/templates/dashboard/builders/storage/routes/index.ts +22 -22
  52. package/cli/templates/dashboard/builders/storage/routes/list-route.ts +25 -25
  53. package/cli/templates/dashboard/builders/storage/routes/preview-route.ts +21 -21
  54. package/cli/templates/dashboard/builders/storage/routes/upload-route.ts +21 -21
  55. package/cli/templates/dashboard/builders/storage/runtime/helpers.ts +72 -72
  56. package/cli/templates/dashboard/builders/storage/runtime/storage-page.ts +130 -130
  57. package/cli/templates/dashboard/builders/table-routes/common/drawer-panel.ts +27 -27
  58. package/cli/templates/dashboard/builders/table-routes/common/pagination.ts +30 -30
  59. package/cli/templates/dashboard/builders/table-routes/common/search-bar.ts +23 -23
  60. package/cli/templates/dashboard/builders/table-routes/fragments.ts +257 -217
  61. package/cli/templates/dashboard/builders/table-routes/helpers.ts +45 -45
  62. package/cli/templates/dashboard/builders/table-routes/index.ts +8 -8
  63. package/cli/templates/dashboard/builders/table-routes/table/actions-cell.ts +71 -71
  64. package/cli/templates/dashboard/builders/table-routes/table/get-route.ts +291 -291
  65. package/cli/templates/dashboard/builders/table-routes/table/index.ts +80 -80
  66. package/cli/templates/dashboard/builders/table-routes/table/post-routes.ts +163 -163
  67. package/cli/templates/dashboard/builders/table-routes/table-route.ts +7 -7
  68. package/cli/templates/dashboard/builders/table-routes/users/get-route.ts +69 -69
  69. package/cli/templates/dashboard/builders/table-routes/users/html/modals.ts +57 -57
  70. package/cli/templates/dashboard/builders/table-routes/users/html/page.ts +27 -27
  71. package/cli/templates/dashboard/builders/table-routes/users/html/table.ts +128 -128
  72. package/cli/templates/dashboard/builders/table-routes/users/index.ts +32 -32
  73. package/cli/templates/dashboard/builders/table-routes/users/post-routes.ts +150 -150
  74. package/cli/templates/dashboard/builders/table-routes/users/redirect.ts +14 -14
  75. package/cli/templates/dashboard/builders/table-routes/users-route.ts +10 -10
  76. package/cli/templates/dashboard/components/dashboard-home.ts +23 -23
  77. package/cli/templates/dashboard/components/layout.ts +420 -420
  78. package/cli/templates/dashboard/components/login-page.ts +65 -65
  79. package/cli/templates/dashboard/index.ts +61 -61
  80. package/cli/templates/dashboard/types.ts +9 -9
  81. package/cli/templates/handlers/README.md +353 -353
  82. package/cli/templates/handlers/auth.ts +37 -37
  83. package/cli/templates/handlers/execution.ts +44 -42
  84. package/cli/templates/handlers/generators/context/context-creation.ts +101 -101
  85. package/cli/templates/handlers/generators/context/error-helpers.ts +11 -11
  86. package/cli/templates/handlers/generators/context/scheduler.ts +24 -24
  87. package/cli/templates/handlers/generators/context/storage-api.ts +82 -82
  88. package/cli/templates/handlers/generators/context/storage-helpers.ts +59 -59
  89. package/cli/templates/handlers/generators/context/types.ts +40 -40
  90. package/cli/templates/handlers/generators/context.ts +43 -43
  91. package/cli/templates/handlers/generators/execution.ts +15 -15
  92. package/cli/templates/handlers/generators/handlers.ts +14 -14
  93. package/cli/templates/handlers/generators/registration/modules/cron.ts +35 -35
  94. package/cli/templates/handlers/generators/registration/modules/realtime/auth.ts +75 -75
  95. package/cli/templates/handlers/generators/registration/modules/realtime/durable-object.ts +144 -144
  96. package/cli/templates/handlers/generators/registration/modules/realtime/index.ts +14 -14
  97. package/cli/templates/handlers/generators/registration/modules/realtime/publisher.ts +102 -102
  98. package/cli/templates/handlers/generators/registration/modules/realtime/routes.ts +164 -164
  99. package/cli/templates/handlers/generators/registration/modules/realtime/types.ts +30 -30
  100. package/cli/templates/handlers/generators/registration/modules/realtime/utils.ts +510 -510
  101. package/cli/templates/handlers/generators/registration/modules/scheduler.ts +65 -65
  102. package/cli/templates/handlers/generators/registration/modules/storage.ts +199 -199
  103. package/cli/templates/handlers/generators/registration/sections.ts +210 -210
  104. package/cli/templates/handlers/generators/types/context.ts +121 -121
  105. package/cli/templates/handlers/generators/types/core.ts +108 -108
  106. package/cli/templates/handlers/generators/types/operations.ts +135 -135
  107. package/cli/templates/handlers/generators/types/query-definitions/filter-and-where-types.ts +291 -291
  108. package/cli/templates/handlers/generators/types/query-definitions/query-api-types.ts +135 -135
  109. package/cli/templates/handlers/generators/types/query-definitions/query-helper-functions.ts +1382 -1382
  110. package/cli/templates/handlers/generators/types/query-definitions/schema-and-table-types.ts +278 -278
  111. package/cli/templates/handlers/generators/types/query-definitions.ts +13 -13
  112. package/cli/templates/handlers/generators/types/query-runtime/handled-error.ts +13 -13
  113. package/cli/templates/handlers/generators/types/query-runtime/runtime-aggregate-and-footer.ts +174 -174
  114. package/cli/templates/handlers/generators/types/query-runtime/runtime-read.ts +156 -156
  115. package/cli/templates/handlers/generators/types/query-runtime/runtime-setup.ts +45 -45
  116. package/cli/templates/handlers/generators/types/query-runtime/runtime-write.ts +958 -958
  117. package/cli/templates/handlers/generators/types/query-runtime.ts +15 -15
  118. package/cli/templates/handlers/index.ts +47 -47
  119. package/cli/templates/handlers/operations.ts +116 -116
  120. package/cli/templates/handlers/registration.ts +91 -91
  121. package/cli/templates/handlers/types.ts +17 -17
  122. package/cli/templates/handlers/utils.ts +48 -48
  123. package/cli/types.ts +110 -110
  124. package/cli/utils/handler-discovery.ts +501 -501
  125. package/cli/utils/json-utils.ts +24 -24
  126. package/cli/utils/path-utils.ts +19 -19
  127. package/cli/utils/schema-discovery.ts +402 -399
  128. package/dist/cli/index.js +77 -55
  129. package/dist/cli/index.mjs +77 -55
  130. package/index.ts +18 -18
  131. package/package.json +58 -58
  132. package/react/index.ts +5 -5
  133. package/react/use-infinite-query.ts +255 -255
  134. package/react/use-mutation.ts +89 -89
  135. package/react/use-query.ts +210 -210
  136. package/schema.ts +641 -641
  137. package/test-better-auth-hash.ts +2 -2
  138. package/tsconfig.json +6 -6
  139. package/tsup.config.ts +82 -82
@@ -1,291 +1,291 @@
1
- export function generateFilterAndWhereTypesSection(): string {
2
- return `type Primitive = string | number | boolean | Date;
3
- type NonNil<T> = Exclude<T, null | undefined>;
4
- type Friendly<T> = T extends Date ? Date | number : T;
5
- type Comparable<T> = Friendly<Extract<NonNil<T>, Primitive>>;
6
- type RegexOperand<T> = T extends string ? string : never;
7
-
8
- type GeoPoint = {
9
- latitude: number;
10
- longitude: number;
11
- };
12
-
13
- type GeoCoordinates = {
14
- type?: "Point";
15
- coordinates: [number, number] | readonly [number, number];
16
- };
17
-
18
- type GeoWithinOperand = {
19
- $geometry: GeoPoint | GeoCoordinates;
20
- latitudeField?: string;
21
- longitudeField?: string;
22
- minDistance?: number;
23
- maxDistance?: number;
24
- gt?: number;
25
- gte?: number;
26
- lt?: number;
27
- lte?: number;
28
- };
29
-
30
- type GeoWithinOperandForField<TFieldKey extends string> = Omit<
31
- GeoWithinOperand,
32
- "latitudeField" | "longitudeField"
33
- > & {
34
- latitudeField?: TFieldKey;
35
- longitudeField?: TFieldKey;
36
- };
37
-
38
- type FieldOperators<T, TFieldKey extends string = string> = {
39
- eq?: Friendly<NonNil<T>>;
40
- ne?: Friendly<NonNil<T>>;
41
- in?: ReadonlyArray<Friendly<NonNil<T>>>;
42
- nin?: ReadonlyArray<Friendly<NonNil<T>>>;
43
- gt?: Comparable<T>;
44
- gte?: Comparable<T>;
45
- lt?: Comparable<T>;
46
- lte?: Comparable<T>;
47
- exists?: boolean;
48
- regex?: RegexOperand<T>;
49
- $options?: string;
50
- geoWithin?: GeoWithinOperandForField<TFieldKey>;
51
- includes?: T extends ReadonlyArray<infer E> ? ReadonlyArray<E> : never;
52
- includesAny?: T extends ReadonlyArray<infer E> ? ReadonlyArray<E> : never;
53
- length?: T extends ReadonlyArray<unknown> ? number : never;
54
- };
55
-
56
- type WhereFieldValue<T, TFieldKey extends string> =
57
- | Friendly<NonNil<T>>
58
- | FieldOperators<T, TFieldKey>;
59
-
60
- type RelationWhereInput<TModel extends Record<string, unknown>, TName extends TableName | any = any> = {
61
- [K in keyof TModel]?:
62
- | WhereFieldValue<TModel[K], Extract<keyof TModel, string>>
63
- | (TModel[K] extends Record<string, unknown> ? RelationWhereInput<TModel[K]> : never);
64
- } & {
65
- geoWithin?: GeoWithinOperandForField<Extract<keyof TModel, string>>;
66
- } & (TName extends TableName ? {
67
- [TRelation in keyof NativeFindManyWith<TName>]?: NativeFindManyWith<TName>[TRelation] extends infer TRelationConfig
68
- ? TRelationConfig extends Record<string, unknown>
69
- ? RelationWhereInput<
70
- RelationModelFromConfig<TRelationConfig>,
71
- any
72
- >
73
- : never
74
- : never;
75
- } : {});
76
-
77
- export type WhereInput<TModel extends Record<string, unknown>, TName extends TableName | any = any> = RelationWhereInput<TModel, TName>;
78
-
79
- type ColumnData<TColumn> = TColumn extends { _: { data: infer TData } }
80
- ? TData
81
- : unknown;
82
-
83
- type InferRelationWhereFields<TConfig> = TConfig extends { where?: infer TWhere }
84
- ? TWhere extends (...args: infer TArgs) => unknown
85
- ? TArgs extends [infer TFields, ...unknown[]]
86
- ? TFields extends Record<string, unknown>
87
- ? TFields
88
- : never
89
- : never
90
- : never
91
- : never;
92
-
93
- type InferRelationNativeWith<TConfig> = TConfig extends { with?: infer TWith }
94
- ? TWith
95
- : never;
96
-
97
- type RelationModelFromConfig<TConfig extends Record<string, unknown>> =
98
- InferRelationWhereFields<TConfig> extends infer TFields
99
- ? TFields extends Record<string, unknown>
100
- ? {
101
- [K in Extract<keyof TFields, string>]: ColumnData<TFields[K]>;
102
- }
103
- : Record<string, unknown>
104
- : Record<string, unknown>;
105
-
106
- type NumericModelFieldKey<TModel extends Record<string, unknown>> = Extract<
107
- {
108
- [K in keyof TModel]-?: NonNullable<TModel[K]> extends number ? K : never;
109
- }[keyof TModel],
110
- string
111
- >;
112
-
113
- type RelationAvgSelectionInput<TModel extends Record<string, unknown>> =
114
- Partial<Record<NumericModelFieldKey<TModel>, boolean>>;
115
-
116
- type RelationAggregateSelectionInput<TModel extends Record<string, unknown>> = {
117
- _count?: boolean;
118
- _avg?: RelationAvgSelectionInput<TModel>;
119
- };
120
-
121
- type QueryNativeWithRelationInput<TEntry, TTargetTable> =
122
- | (Extract<TEntry, true> extends never ? never : true)
123
- | (Extract<TEntry, Record<string, unknown>> extends infer TRelation
124
- ? TRelation extends Record<string, unknown>
125
- ? Omit<TRelation, "where" | "with" | "_count" | "_avg"> &
126
- RelationAggregateSelectionInput<RelationModelFromConfig<TRelation>> & {
127
- where?: WhereInput<RelationModelFromConfig<TRelation>, Extract<TTargetTable, TableName>>;
128
- with?: TRelation extends { with?: infer TNestedWith }
129
- ? QueryWithInputForTable<Extract<TTargetTable, TableName>, TNestedWith>
130
- : never;
131
- }
132
- : never
133
- : never);
134
-
135
- type QueryManyToManyWithRelationInput<TTargetTable extends TableName> =
136
- | true
137
- | (Omit<NonNullable<TableFindManyArgs<TTargetTable>>, "where" | "with"> &
138
- RelationAggregateSelectionInput<TableModel<TTargetTable>> & {
139
- where?: WhereInput<TableModel<TTargetTable>, TTargetTable>;
140
- with?: QueryWithInputForTable<
141
- TTargetTable,
142
- NativeFindManyWith<TTargetTable>
143
- >;
144
- });
145
-
146
- type QueryWithRelationInputForTable<
147
- TSourceTable extends TableName,
148
- TRelationName extends string,
149
- TEntry,
150
- > = [ManyToManyTargetTableName<TSourceTable, TRelationName>] extends [never]
151
- ? QueryNativeWithRelationInput<TEntry, RuntimeRelationTargetTable<TSourceTable, TRelationName>>
152
- : QueryManyToManyWithRelationInput<
153
- Extract<ManyToManyTargetTableName<TSourceTable, TRelationName>, TableName>
154
- >;
155
-
156
- type QueryWithInputForTable<
157
- TSourceTable extends TableName,
158
- TWith,
159
- > = TWith extends Record<string, unknown>
160
- ? {
161
- [K in keyof TWith]?: QueryWithRelationInputForTable<
162
- TSourceTable,
163
- Extract<K, string>,
164
- TWith[K]
165
- >;
166
- }
167
- : TWith;
168
-
169
- type QueryWithInput<TName extends TableName, TWith> = QueryWithInputForTable<
170
- TName,
171
- TWith
172
- >;
173
-
174
- export type OrderByDirection = "asc" | "desc";
175
-
176
- export type OrderByInput<TName extends TableName> =
177
- | { column: Extract<keyof TableModel<TName>, string>; direction?: OrderByDirection }
178
- | Array<{ column: Extract<keyof TableModel<TName>, string>; direction?: OrderByDirection }>;
179
-
180
- export type QueryFindManyArgs<TName extends TableName> = Omit<
181
- NonNullable<TableFindManyArgs<TName>>,
182
- "where" | "with" | "orderBy"
183
- > & {
184
- where?: WhereInput<TableModel<TName>, TName>;
185
- with?: QueryWithInput<TName, NativeFindManyWith<TName>>;
186
- orderBy?: OrderByInput<TName>;
187
- };
188
-
189
- export type QueryFindFirstArgs<TName extends TableName> = Omit<
190
- NonNullable<TableFindFirstArgs<TName>>,
191
- "where" | "with" | "orderBy"
192
- > & {
193
- where?: WhereInput<TableModel<TName>, TName>;
194
- with?: QueryWithInput<TName, NativeFindFirstWith<TName>>;
195
- orderBy?: OrderByInput<TName>;
196
- };
197
-
198
- type RelationInsertItem<TTargetTable extends TableName> =
199
- | TableModel<TTargetTable>
200
- | TableInsertModel<TTargetTable>
201
- | ("id" extends keyof TableModel<TTargetTable>
202
- ? TableModel<TTargetTable>["id"]
203
- : never);
204
-
205
- type RelationInsertValue<
206
- TSourceTable extends TableName,
207
- TRelationName extends RuntimeRelationName<TSourceTable>,
208
- > = RuntimeRelationTargetTable<TSourceTable, TRelationName> extends infer TTargetTable
209
- ? TTargetTable extends TableName
210
- ? RuntimeRelationKind<TSourceTable, TRelationName> extends "one"
211
- ? RelationInsertItem<TTargetTable>
212
- : RelationInsertItem<TTargetTable> | Array<RelationInsertItem<TTargetTable>>
213
- : never
214
- : never;
215
-
216
- type RelationInsertFields<TName extends TableName> = {
217
- [TRelationName in RuntimeRelationName<TName>]?: RelationInsertValue<
218
- TName,
219
- TRelationName
220
- >;
221
- };
222
-
223
- type QueryInsertValue<TName extends TableName> = TableInsertScalarModel<TName> &
224
- RelationInsertFields<TName>;
225
-
226
- type InsertItemValue<TArgs> = TArgs extends { values: infer TValue }
227
- ? TValue extends Array<infer TItem>
228
- ? TItem
229
- : TValue
230
- : never;
231
-
232
- type InsertRelationNameFromArgs<
233
- TName extends TableName,
234
- TArgs,
235
- > = Extract<keyof InsertItemValue<TArgs>, RuntimeRelationName<TName>>;
236
-
237
- type InsertRelationResultValue<
238
- TSourceTable extends TableName,
239
- TRelationName extends RuntimeRelationName<TSourceTable>,
240
- > = RuntimeRelationTargetTable<TSourceTable, TRelationName> extends infer TTargetTable
241
- ? TTargetTable extends TableName
242
- ? RuntimeRelationKind<TSourceTable, TRelationName> extends "one"
243
- ? TableModel<TTargetTable> | null
244
- : Array<TableModel<TTargetTable>>
245
- : never
246
- : never;
247
-
248
- export type QueryInsertResultRow<
249
- TName extends TableName,
250
- TArgs extends QueryInsertArgs<TName>,
251
- > = TableModel<TName> & {
252
- [TRelationName in InsertRelationNameFromArgs<TName, TArgs>]:
253
- InsertRelationResultValue<TName, TRelationName>;
254
- };
255
-
256
- export type QueryInsertArgs<TName extends TableName> = {
257
- values: QueryInsertValue<TName> | Array<QueryInsertValue<TName>>;
258
- };
259
-
260
- export type QueryUpdateArgs<TName extends TableName> = {
261
- set: Partial<TableInsertModel<TName>> & ManyToManyUpdateSetFields<TName>;
262
- where?: WhereInput<TableModel<TName>, TName>;
263
- limit?: number;
264
- };
265
-
266
- type ManyToManyUpdateSetFields<TName extends TableName> = {
267
- [TRelationName in RuntimeRelationName<TName>]?: RuntimeRelationKind<TName, TRelationName> extends "manyToMany"
268
- ? ManyToManyUpdateInput<TName, TRelationName>
269
- : never;
270
- };
271
-
272
- type ManyToManyUpdateInput<
273
- TSourceTable extends TableName,
274
- TRelationName extends RuntimeRelationName<TSourceTable>,
275
- > = {
276
- items: Array<ManyToManyUpdateItem<TargetTableForRelation<TSourceTable, TRelationName>>>;
277
- mode?: "merge" | "overwrite";
278
- };
279
-
280
- type ManyToManyUpdateItem<TTargetTable extends TableName> =
281
- | ("id" extends keyof TableModel<TTargetTable>
282
- ? TableModel<TTargetTable>["id"]
283
- : never)
284
- | Partial<TableInsertModel<TTargetTable>>;
285
-
286
- export type QueryDeleteArgs<TName extends TableName> = {
287
- where?: WhereInput<TableModel<TName>, TName>;
288
- limit?: number;
289
- };
290
- `;
291
- }
1
+ export function generateFilterAndWhereTypesSection(): string {
2
+ return `type Primitive = string | number | boolean | Date;
3
+ type NonNil<T> = Exclude<T, null | undefined>;
4
+ type Friendly<T> = T extends Date ? Date | number : T;
5
+ type Comparable<T> = Friendly<Extract<NonNil<T>, Primitive>>;
6
+ type RegexOperand<T> = T extends string ? string : never;
7
+
8
+ type GeoPoint = {
9
+ latitude: number;
10
+ longitude: number;
11
+ };
12
+
13
+ type GeoCoordinates = {
14
+ type?: "Point";
15
+ coordinates: [number, number] | readonly [number, number];
16
+ };
17
+
18
+ type GeoWithinOperand = {
19
+ $geometry: GeoPoint | GeoCoordinates;
20
+ latitudeField?: string;
21
+ longitudeField?: string;
22
+ minDistance?: number;
23
+ maxDistance?: number;
24
+ gt?: number;
25
+ gte?: number;
26
+ lt?: number;
27
+ lte?: number;
28
+ };
29
+
30
+ type GeoWithinOperandForField<TFieldKey extends string> = Omit<
31
+ GeoWithinOperand,
32
+ "latitudeField" | "longitudeField"
33
+ > & {
34
+ latitudeField?: TFieldKey;
35
+ longitudeField?: TFieldKey;
36
+ };
37
+
38
+ type FieldOperators<T, TFieldKey extends string = string> = {
39
+ eq?: Friendly<NonNil<T>>;
40
+ ne?: Friendly<NonNil<T>>;
41
+ in?: ReadonlyArray<Friendly<NonNil<T>>>;
42
+ nin?: ReadonlyArray<Friendly<NonNil<T>>>;
43
+ gt?: Comparable<T>;
44
+ gte?: Comparable<T>;
45
+ lt?: Comparable<T>;
46
+ lte?: Comparable<T>;
47
+ exists?: boolean;
48
+ regex?: RegexOperand<T>;
49
+ $options?: string;
50
+ geoWithin?: GeoWithinOperandForField<TFieldKey>;
51
+ includes?: T extends ReadonlyArray<infer E> ? ReadonlyArray<E> : never;
52
+ includesAny?: T extends ReadonlyArray<infer E> ? ReadonlyArray<E> : never;
53
+ length?: T extends ReadonlyArray<unknown> ? number : never;
54
+ };
55
+
56
+ type WhereFieldValue<T, TFieldKey extends string> =
57
+ | Friendly<NonNil<T>>
58
+ | FieldOperators<T, TFieldKey>;
59
+
60
+ type RelationWhereInput<TModel extends Record<string, unknown>, TName extends TableName | any = any> = {
61
+ [K in keyof TModel]?:
62
+ | WhereFieldValue<TModel[K], Extract<keyof TModel, string>>
63
+ | (TModel[K] extends Record<string, unknown> ? RelationWhereInput<TModel[K]> : never);
64
+ } & {
65
+ geoWithin?: GeoWithinOperandForField<Extract<keyof TModel, string>>;
66
+ } & (TName extends TableName ? {
67
+ [TRelation in keyof NativeFindManyWith<TName>]?: NativeFindManyWith<TName>[TRelation] extends infer TRelationConfig
68
+ ? TRelationConfig extends Record<string, unknown>
69
+ ? RelationWhereInput<
70
+ RelationModelFromConfig<TRelationConfig>,
71
+ any
72
+ >
73
+ : never
74
+ : never;
75
+ } : {});
76
+
77
+ export type WhereInput<TModel extends Record<string, unknown>, TName extends TableName | any = any> = RelationWhereInput<TModel, TName>;
78
+
79
+ type ColumnData<TColumn> = TColumn extends { _: { data: infer TData } }
80
+ ? TData
81
+ : unknown;
82
+
83
+ type InferRelationWhereFields<TConfig> = TConfig extends { where?: infer TWhere }
84
+ ? TWhere extends (...args: infer TArgs) => unknown
85
+ ? TArgs extends [infer TFields, ...unknown[]]
86
+ ? TFields extends Record<string, unknown>
87
+ ? TFields
88
+ : never
89
+ : never
90
+ : never
91
+ : never;
92
+
93
+ type InferRelationNativeWith<TConfig> = TConfig extends { with?: infer TWith }
94
+ ? TWith
95
+ : never;
96
+
97
+ type RelationModelFromConfig<TConfig extends Record<string, unknown>> =
98
+ InferRelationWhereFields<TConfig> extends infer TFields
99
+ ? TFields extends Record<string, unknown>
100
+ ? {
101
+ [K in Extract<keyof TFields, string>]: ColumnData<TFields[K]>;
102
+ }
103
+ : Record<string, unknown>
104
+ : Record<string, unknown>;
105
+
106
+ type NumericModelFieldKey<TModel extends Record<string, unknown>> = Extract<
107
+ {
108
+ [K in keyof TModel]-?: NonNullable<TModel[K]> extends number ? K : never;
109
+ }[keyof TModel],
110
+ string
111
+ >;
112
+
113
+ type RelationAvgSelectionInput<TModel extends Record<string, unknown>> =
114
+ Partial<Record<NumericModelFieldKey<TModel>, boolean>>;
115
+
116
+ type RelationAggregateSelectionInput<TModel extends Record<string, unknown>> = {
117
+ _count?: boolean;
118
+ _avg?: RelationAvgSelectionInput<TModel>;
119
+ };
120
+
121
+ type QueryNativeWithRelationInput<TEntry, TTargetTable> =
122
+ | (Extract<TEntry, true> extends never ? never : true)
123
+ | (Extract<TEntry, Record<string, unknown>> extends infer TRelation
124
+ ? TRelation extends Record<string, unknown>
125
+ ? Omit<TRelation, "where" | "with" | "_count" | "_avg"> &
126
+ RelationAggregateSelectionInput<RelationModelFromConfig<TRelation>> & {
127
+ where?: WhereInput<RelationModelFromConfig<TRelation>, Extract<TTargetTable, TableName>>;
128
+ with?: TRelation extends { with?: infer TNestedWith }
129
+ ? QueryWithInputForTable<Extract<TTargetTable, TableName>, TNestedWith>
130
+ : never;
131
+ }
132
+ : never
133
+ : never);
134
+
135
+ type QueryManyToManyWithRelationInput<TTargetTable extends TableName> =
136
+ | true
137
+ | (Omit<NonNullable<TableFindManyArgs<TTargetTable>>, "where" | "with"> &
138
+ RelationAggregateSelectionInput<TableModel<TTargetTable>> & {
139
+ where?: WhereInput<TableModel<TTargetTable>, TTargetTable>;
140
+ with?: QueryWithInputForTable<
141
+ TTargetTable,
142
+ NativeFindManyWith<TTargetTable>
143
+ >;
144
+ });
145
+
146
+ type QueryWithRelationInputForTable<
147
+ TSourceTable extends TableName,
148
+ TRelationName extends string,
149
+ TEntry,
150
+ > = [ManyToManyTargetTableName<TSourceTable, TRelationName>] extends [never]
151
+ ? QueryNativeWithRelationInput<TEntry, RuntimeRelationTargetTable<TSourceTable, TRelationName>>
152
+ : QueryManyToManyWithRelationInput<
153
+ Extract<ManyToManyTargetTableName<TSourceTable, TRelationName>, TableName>
154
+ >;
155
+
156
+ type QueryWithInputForTable<
157
+ TSourceTable extends TableName,
158
+ TWith,
159
+ > = TWith extends Record<string, unknown>
160
+ ? {
161
+ [K in keyof TWith]?: QueryWithRelationInputForTable<
162
+ TSourceTable,
163
+ Extract<K, string>,
164
+ TWith[K]
165
+ >;
166
+ }
167
+ : TWith;
168
+
169
+ type QueryWithInput<TName extends TableName, TWith> = QueryWithInputForTable<
170
+ TName,
171
+ TWith
172
+ >;
173
+
174
+ export type OrderByDirection = "asc" | "desc";
175
+
176
+ export type OrderByInput<TName extends TableName> =
177
+ | { column: Extract<keyof TableModel<TName>, string>; direction?: OrderByDirection }
178
+ | Array<{ column: Extract<keyof TableModel<TName>, string>; direction?: OrderByDirection }>;
179
+
180
+ export type QueryFindManyArgs<TName extends TableName> = Omit<
181
+ NonNullable<TableFindManyArgs<TName>>,
182
+ "where" | "with" | "orderBy"
183
+ > & {
184
+ where?: WhereInput<TableModel<TName>, TName>;
185
+ with?: QueryWithInput<TName, NativeFindManyWith<TName>>;
186
+ orderBy?: OrderByInput<TName>;
187
+ };
188
+
189
+ export type QueryFindFirstArgs<TName extends TableName> = Omit<
190
+ NonNullable<TableFindFirstArgs<TName>>,
191
+ "where" | "with" | "orderBy"
192
+ > & {
193
+ where?: WhereInput<TableModel<TName>, TName>;
194
+ with?: QueryWithInput<TName, NativeFindFirstWith<TName>>;
195
+ orderBy?: OrderByInput<TName>;
196
+ };
197
+
198
+ type RelationInsertItem<TTargetTable extends TableName> =
199
+ | TableModel<TTargetTable>
200
+ | TableInsertModel<TTargetTable>
201
+ | ("id" extends keyof TableModel<TTargetTable>
202
+ ? TableModel<TTargetTable>["id"]
203
+ : never);
204
+
205
+ type RelationInsertValue<
206
+ TSourceTable extends TableName,
207
+ TRelationName extends RuntimeRelationName<TSourceTable>,
208
+ > = RuntimeRelationTargetTable<TSourceTable, TRelationName> extends infer TTargetTable
209
+ ? TTargetTable extends TableName
210
+ ? RuntimeRelationKind<TSourceTable, TRelationName> extends "one"
211
+ ? RelationInsertItem<TTargetTable>
212
+ : RelationInsertItem<TTargetTable> | Array<RelationInsertItem<TTargetTable>>
213
+ : never
214
+ : never;
215
+
216
+ type RelationInsertFields<TName extends TableName> = {
217
+ [TRelationName in RuntimeRelationName<TName>]?: RelationInsertValue<
218
+ TName,
219
+ TRelationName
220
+ >;
221
+ };
222
+
223
+ type QueryInsertValue<TName extends TableName> = TableInsertScalarModel<TName> &
224
+ RelationInsertFields<TName>;
225
+
226
+ type InsertItemValue<TArgs> = TArgs extends { values: infer TValue }
227
+ ? TValue extends Array<infer TItem>
228
+ ? TItem
229
+ : TValue
230
+ : never;
231
+
232
+ type InsertRelationNameFromArgs<
233
+ TName extends TableName,
234
+ TArgs,
235
+ > = Extract<keyof InsertItemValue<TArgs>, RuntimeRelationName<TName>>;
236
+
237
+ type InsertRelationResultValue<
238
+ TSourceTable extends TableName,
239
+ TRelationName extends RuntimeRelationName<TSourceTable>,
240
+ > = RuntimeRelationTargetTable<TSourceTable, TRelationName> extends infer TTargetTable
241
+ ? TTargetTable extends TableName
242
+ ? RuntimeRelationKind<TSourceTable, TRelationName> extends "one"
243
+ ? TableModel<TTargetTable> | null
244
+ : Array<TableModel<TTargetTable>>
245
+ : never
246
+ : never;
247
+
248
+ export type QueryInsertResultRow<
249
+ TName extends TableName,
250
+ TArgs extends QueryInsertArgs<TName>,
251
+ > = TableModel<TName> & {
252
+ [TRelationName in InsertRelationNameFromArgs<TName, TArgs>]:
253
+ InsertRelationResultValue<TName, TRelationName>;
254
+ };
255
+
256
+ export type QueryInsertArgs<TName extends TableName> = {
257
+ values: QueryInsertValue<TName> | Array<QueryInsertValue<TName>>;
258
+ };
259
+
260
+ export type QueryUpdateArgs<TName extends TableName> = {
261
+ set: Partial<TableInsertModel<TName>> & ManyToManyUpdateSetFields<TName>;
262
+ where?: WhereInput<TableModel<TName>, TName>;
263
+ limit?: number;
264
+ };
265
+
266
+ type ManyToManyUpdateSetFields<TName extends TableName> = {
267
+ [TRelationName in RuntimeRelationName<TName>]?: RuntimeRelationKind<TName, TRelationName> extends "manyToMany"
268
+ ? ManyToManyUpdateInput<TName, TRelationName>
269
+ : never;
270
+ };
271
+
272
+ type ManyToManyUpdateInput<
273
+ TSourceTable extends TableName,
274
+ TRelationName extends RuntimeRelationName<TSourceTable>,
275
+ > = {
276
+ items: Array<ManyToManyUpdateItem<TargetTableForRelation<TSourceTable, TRelationName>>>;
277
+ mode?: "merge" | "overwrite";
278
+ };
279
+
280
+ type ManyToManyUpdateItem<TTargetTable extends TableName> =
281
+ | ("id" extends keyof TableModel<TTargetTable>
282
+ ? TableModel<TTargetTable>["id"]
283
+ : never)
284
+ | Partial<TableInsertModel<TTargetTable>>;
285
+
286
+ export type QueryDeleteArgs<TName extends TableName> = {
287
+ where?: WhereInput<TableModel<TName>, TName>;
288
+ limit?: number;
289
+ };
290
+ `;
291
+ }