appflare 0.2.25 → 0.2.26
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/Documentation.md +758 -758
- package/cli/commands/index.ts +238 -238
- package/cli/generate.ts +178 -178
- package/cli/index.ts +120 -120
- package/cli/load-config.ts +184 -184
- package/cli/schema-compiler.ts +1183 -1183
- package/cli/templates/auth/README.md +156 -156
- package/cli/templates/auth/config.ts +61 -61
- package/cli/templates/auth/route-config.ts +1 -1
- package/cli/templates/auth/route-handler.ts +1 -1
- package/cli/templates/auth/route-request-utils.ts +5 -5
- package/cli/templates/auth/route.config.ts +18 -18
- package/cli/templates/auth/route.handler.ts +18 -18
- package/cli/templates/auth/route.request-utils.ts +55 -55
- package/cli/templates/auth/route.ts +14 -14
- package/cli/templates/core/README.md +266 -266
- package/cli/templates/core/app-creation.ts +19 -19
- package/cli/templates/core/client/appflare.ts +112 -112
- package/cli/templates/core/client/handlers/index.ts +748 -748
- package/cli/templates/core/client/handlers.ts +1 -1
- package/cli/templates/core/client/index.ts +7 -7
- package/cli/templates/core/client/storage.ts +180 -180
- package/cli/templates/core/client/types.ts +184 -184
- package/cli/templates/core/client-modules/appflare.ts +1 -1
- package/cli/templates/core/client-modules/handlers.ts +1 -1
- package/cli/templates/core/client-modules/index.ts +1 -1
- package/cli/templates/core/client-modules/storage.ts +1 -1
- package/cli/templates/core/client-modules/types.ts +1 -1
- package/cli/templates/core/client.artifacts.ts +39 -39
- package/cli/templates/core/client.ts +4 -4
- package/cli/templates/core/drizzle.ts +15 -15
- package/cli/templates/core/export.ts +14 -14
- package/cli/templates/core/handlers.route.ts +24 -24
- package/cli/templates/core/handlers.ts +1 -1
- package/cli/templates/core/imports.ts +9 -9
- package/cli/templates/core/server.ts +38 -38
- package/cli/templates/core/types.ts +6 -6
- package/cli/templates/core/wrangler.ts +109 -109
- package/cli/templates/dashboard/builders/functions/index.ts +17 -17
- package/cli/templates/dashboard/builders/functions/render-page/header.ts +20 -20
- package/cli/templates/dashboard/builders/functions/render-page/index.ts +33 -33
- package/cli/templates/dashboard/builders/functions/render-page/request-panel.ts +171 -171
- package/cli/templates/dashboard/builders/functions/render-page/result-panel.ts +85 -85
- package/cli/templates/dashboard/builders/functions/render-page/scripts.ts +554 -554
- package/cli/templates/dashboard/builders/navigation.ts +122 -122
- package/cli/templates/dashboard/builders/storage/index.ts +13 -13
- package/cli/templates/dashboard/builders/storage/routes/create-directory-route.ts +29 -29
- package/cli/templates/dashboard/builders/storage/routes/delete-route.ts +18 -18
- package/cli/templates/dashboard/builders/storage/routes/download-route.ts +23 -23
- package/cli/templates/dashboard/builders/storage/routes/index.ts +22 -22
- package/cli/templates/dashboard/builders/storage/routes/list-route.ts +25 -25
- package/cli/templates/dashboard/builders/storage/routes/preview-route.ts +21 -21
- package/cli/templates/dashboard/builders/storage/routes/upload-route.ts +21 -21
- package/cli/templates/dashboard/builders/storage/runtime/helpers.ts +72 -72
- package/cli/templates/dashboard/builders/storage/runtime/storage-page.ts +130 -130
- package/cli/templates/dashboard/builders/table-routes/common/drawer-panel.ts +27 -27
- package/cli/templates/dashboard/builders/table-routes/common/pagination.ts +30 -30
- package/cli/templates/dashboard/builders/table-routes/common/search-bar.ts +23 -23
- package/cli/templates/dashboard/builders/table-routes/fragments.ts +217 -217
- package/cli/templates/dashboard/builders/table-routes/helpers.ts +45 -45
- package/cli/templates/dashboard/builders/table-routes/index.ts +8 -8
- package/cli/templates/dashboard/builders/table-routes/table/actions-cell.ts +71 -71
- package/cli/templates/dashboard/builders/table-routes/table/get-route.ts +291 -291
- package/cli/templates/dashboard/builders/table-routes/table/index.ts +80 -80
- package/cli/templates/dashboard/builders/table-routes/table/post-routes.ts +163 -163
- package/cli/templates/dashboard/builders/table-routes/table-route.ts +7 -7
- package/cli/templates/dashboard/builders/table-routes/users/get-route.ts +69 -69
- package/cli/templates/dashboard/builders/table-routes/users/html/modals.ts +57 -57
- package/cli/templates/dashboard/builders/table-routes/users/html/page.ts +27 -27
- package/cli/templates/dashboard/builders/table-routes/users/html/table.ts +128 -128
- package/cli/templates/dashboard/builders/table-routes/users/index.ts +32 -32
- package/cli/templates/dashboard/builders/table-routes/users/post-routes.ts +150 -150
- package/cli/templates/dashboard/builders/table-routes/users/redirect.ts +14 -14
- package/cli/templates/dashboard/builders/table-routes/users-route.ts +10 -10
- package/cli/templates/dashboard/components/dashboard-home.ts +23 -23
- package/cli/templates/dashboard/components/layout.ts +388 -388
- package/cli/templates/dashboard/components/login-page.ts +65 -65
- package/cli/templates/dashboard/index.ts +61 -61
- package/cli/templates/dashboard/types.ts +9 -9
- package/cli/templates/handlers/README.md +353 -353
- package/cli/templates/handlers/auth.ts +37 -37
- package/cli/templates/handlers/execution.ts +42 -42
- package/cli/templates/handlers/generators/context/context-creation.ts +101 -101
- package/cli/templates/handlers/generators/context/error-helpers.ts +11 -11
- package/cli/templates/handlers/generators/context/scheduler.ts +24 -24
- package/cli/templates/handlers/generators/context/storage-api.ts +134 -112
- package/cli/templates/handlers/generators/context/storage-helpers.ts +59 -59
- package/cli/templates/handlers/generators/context/types.ts +18 -18
- package/cli/templates/handlers/generators/context.ts +43 -43
- package/cli/templates/handlers/generators/execution.ts +15 -15
- package/cli/templates/handlers/generators/handlers.ts +13 -13
- package/cli/templates/handlers/generators/registration/modules/cron.ts +26 -26
- package/cli/templates/handlers/generators/registration/modules/realtime/auth.ts +75 -75
- package/cli/templates/handlers/generators/registration/modules/realtime/durable-object.ts +144 -144
- package/cli/templates/handlers/generators/registration/modules/realtime/index.ts +14 -14
- package/cli/templates/handlers/generators/registration/modules/realtime/publisher.ts +102 -102
- package/cli/templates/handlers/generators/registration/modules/realtime/routes.ts +164 -164
- package/cli/templates/handlers/generators/registration/modules/realtime/types.ts +30 -30
- package/cli/templates/handlers/generators/registration/modules/realtime/utils.ts +516 -516
- package/cli/templates/handlers/generators/registration/modules/scheduler.ts +56 -56
- package/cli/templates/handlers/generators/registration/modules/storage.ts +196 -194
- package/cli/templates/handlers/generators/registration/sections.ts +210 -210
- package/cli/templates/handlers/generators/types/context.ts +68 -66
- package/cli/templates/handlers/generators/types/core.ts +106 -106
- package/cli/templates/handlers/generators/types/operations.ts +135 -135
- package/cli/templates/handlers/generators/types/query-definitions/filter-and-where-types.ts +259 -259
- package/cli/templates/handlers/generators/types/query-definitions/query-api-types.ts +135 -135
- package/cli/templates/handlers/generators/types/query-definitions/query-helper-functions.ts +1031 -1031
- package/cli/templates/handlers/generators/types/query-definitions/schema-and-table-types.ts +246 -246
- package/cli/templates/handlers/generators/types/query-definitions.ts +13 -13
- package/cli/templates/handlers/generators/types/query-runtime/handled-error.ts +13 -13
- package/cli/templates/handlers/generators/types/query-runtime/runtime-aggregate-and-footer.ts +174 -174
- package/cli/templates/handlers/generators/types/query-runtime/runtime-read.ts +121 -121
- package/cli/templates/handlers/generators/types/query-runtime/runtime-setup.ts +45 -45
- package/cli/templates/handlers/generators/types/query-runtime/runtime-write.ts +676 -676
- package/cli/templates/handlers/generators/types/query-runtime.ts +15 -15
- package/cli/templates/handlers/index.ts +43 -43
- package/cli/templates/handlers/operations.ts +116 -116
- package/cli/templates/handlers/registration.ts +91 -91
- package/cli/templates/handlers/types.ts +15 -15
- package/cli/templates/handlers/utils.ts +48 -48
- package/cli/types.ts +110 -110
- package/cli/utils/handler-discovery.ts +466 -466
- package/cli/utils/json-utils.ts +24 -24
- package/cli/utils/path-utils.ts +19 -19
- package/cli/utils/schema-discovery.ts +399 -399
- package/dist/cli/index.js +43 -17
- package/dist/cli/index.mjs +43 -17
- package/index.ts +18 -18
- package/package.json +58 -58
- package/react/index.ts +5 -5
- package/react/use-infinite-query.ts +252 -252
- package/react/use-mutation.ts +89 -89
- package/react/use-query.ts +207 -207
- package/schema.ts +415 -415
- package/test-better-auth-hash.ts +2 -2
- package/tsconfig.json +6 -6
- package/tsup.config.ts +82 -82
- package/dist/cli/index.d.mts +0 -2
- package/dist/cli/index.d.ts +0 -2
|
@@ -1,259 +1,259 @@
|
|
|
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
|
-
$gt?: number;
|
|
29
|
-
$gte?: number;
|
|
30
|
-
$lt?: number;
|
|
31
|
-
$lte?: number;
|
|
32
|
-
};
|
|
33
|
-
|
|
34
|
-
type GeoWithinOperandForField<TFieldKey extends string> = Omit<
|
|
35
|
-
GeoWithinOperand,
|
|
36
|
-
"latitudeField" | "longitudeField"
|
|
37
|
-
> & {
|
|
38
|
-
latitudeField?: TFieldKey;
|
|
39
|
-
longitudeField?: TFieldKey;
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
type FieldOperators<T, TFieldKey extends string = string> = {
|
|
43
|
-
eq?: Friendly<NonNil<T>>;
|
|
44
|
-
$eq?: Friendly<NonNil<T>>;
|
|
45
|
-
ne?: Friendly<NonNil<T>>;
|
|
46
|
-
$ne?: Friendly<NonNil<T>>;
|
|
47
|
-
in?: ReadonlyArray<Friendly<NonNil<T>>>;
|
|
48
|
-
$in?: ReadonlyArray<Friendly<NonNil<T>>>;
|
|
49
|
-
nin?: ReadonlyArray<Friendly<NonNil<T>>>;
|
|
50
|
-
$nin?: ReadonlyArray<Friendly<NonNil<T>>>;
|
|
51
|
-
gt?: Comparable<T>;
|
|
52
|
-
$gt?: Comparable<T>;
|
|
53
|
-
gte?: Comparable<T>;
|
|
54
|
-
$gte?: Comparable<T>;
|
|
55
|
-
lt?: Comparable<T>;
|
|
56
|
-
$lt?: Comparable<T>;
|
|
57
|
-
lte?: Comparable<T>;
|
|
58
|
-
$lte?: Comparable<T>;
|
|
59
|
-
exists?: boolean;
|
|
60
|
-
regex?: RegexOperand<T>;
|
|
61
|
-
$options?: string;
|
|
62
|
-
geoWithin?: GeoWithinOperandForField<TFieldKey>;
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
type WhereFieldValue<T, TFieldKey extends string> =
|
|
66
|
-
| Friendly<NonNil<T>>
|
|
67
|
-
| FieldOperators<T, TFieldKey>;
|
|
68
|
-
|
|
69
|
-
export type WhereInput<TModel extends Record<string, unknown>> = {
|
|
70
|
-
[K in keyof TModel]?: WhereFieldValue<
|
|
71
|
-
TModel[K],
|
|
72
|
-
Extract<keyof TModel, string>
|
|
73
|
-
>;
|
|
74
|
-
} & {
|
|
75
|
-
geoWithin?: GeoWithinOperandForField<Extract<keyof TModel, string>>;
|
|
76
|
-
$geoWithin?: GeoWithinOperandForField<Extract<keyof TModel, string>>;
|
|
77
|
-
};
|
|
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 RelationModelFromConfig<TConfig extends Record<string, unknown>> =
|
|
94
|
-
InferRelationWhereFields<TConfig> extends infer TFields
|
|
95
|
-
? TFields extends Record<string, unknown>
|
|
96
|
-
? {
|
|
97
|
-
[K in Extract<keyof TFields, string>]: ColumnData<TFields[K]>;
|
|
98
|
-
}
|
|
99
|
-
: Record<string, unknown>
|
|
100
|
-
: Record<string, unknown>;
|
|
101
|
-
|
|
102
|
-
type NumericModelFieldKey<TModel extends Record<string, unknown>> = Extract<
|
|
103
|
-
{
|
|
104
|
-
[K in keyof TModel]-?: NonNullable<TModel[K]> extends number ? K : never;
|
|
105
|
-
}[keyof TModel],
|
|
106
|
-
string
|
|
107
|
-
>;
|
|
108
|
-
|
|
109
|
-
type RelationAvgSelectionInput<TModel extends Record<string, unknown>> =
|
|
110
|
-
Partial<Record<NumericModelFieldKey<TModel>, boolean>>;
|
|
111
|
-
|
|
112
|
-
type RelationAggregateSelectionInput<TModel extends Record<string, unknown>> = {
|
|
113
|
-
_count?: boolean;
|
|
114
|
-
_avg?: RelationAvgSelectionInput<TModel>;
|
|
115
|
-
};
|
|
116
|
-
|
|
117
|
-
type QueryNativeWithRelationInput<TEntry> =
|
|
118
|
-
| (Extract<TEntry, true> extends never ? never : true)
|
|
119
|
-
| (Extract<TEntry, Record<string, unknown>> extends infer TRelation
|
|
120
|
-
? TRelation extends Record<string, unknown>
|
|
121
|
-
? Omit<TRelation, "where" | "with" | "_count" | "_avg"> &
|
|
122
|
-
RelationAggregateSelectionInput<RelationModelFromConfig<TRelation>> & {
|
|
123
|
-
where?: WhereInput<RelationModelFromConfig<TRelation>>;
|
|
124
|
-
with?: TRelation extends { with?: infer TNestedWith }
|
|
125
|
-
? QueryWithInputForTable<TableName, TNestedWith>
|
|
126
|
-
: never;
|
|
127
|
-
}
|
|
128
|
-
: never
|
|
129
|
-
: never);
|
|
130
|
-
|
|
131
|
-
type QueryManyToManyWithRelationInput<TTargetTable extends TableName> =
|
|
132
|
-
| true
|
|
133
|
-
| (Omit<NonNullable<TableFindManyArgs<TTargetTable>>, "where" | "with"> &
|
|
134
|
-
RelationAggregateSelectionInput<TableModel<TTargetTable>> & {
|
|
135
|
-
where?: WhereInput<TableModel<TTargetTable>>;
|
|
136
|
-
with?: QueryWithInputForTable<
|
|
137
|
-
TTargetTable,
|
|
138
|
-
NativeFindManyWith<TTargetTable>
|
|
139
|
-
>;
|
|
140
|
-
});
|
|
141
|
-
|
|
142
|
-
type QueryWithRelationInputForTable<
|
|
143
|
-
TSourceTable extends TableName,
|
|
144
|
-
TRelationName extends string,
|
|
145
|
-
TEntry,
|
|
146
|
-
> = [ManyToManyTargetTableName<TSourceTable, TRelationName>] extends [never]
|
|
147
|
-
? QueryNativeWithRelationInput<TEntry>
|
|
148
|
-
: QueryManyToManyWithRelationInput<
|
|
149
|
-
Extract<ManyToManyTargetTableName<TSourceTable, TRelationName>, TableName>
|
|
150
|
-
>;
|
|
151
|
-
|
|
152
|
-
type QueryWithInputForTable<
|
|
153
|
-
TSourceTable extends TableName,
|
|
154
|
-
TWith,
|
|
155
|
-
> = TWith extends Record<string, unknown>
|
|
156
|
-
? {
|
|
157
|
-
[K in keyof TWith]?: QueryWithRelationInputForTable<
|
|
158
|
-
TSourceTable,
|
|
159
|
-
Extract<K, string>,
|
|
160
|
-
TWith[K]
|
|
161
|
-
>;
|
|
162
|
-
}
|
|
163
|
-
: TWith;
|
|
164
|
-
|
|
165
|
-
type QueryWithInput<TName extends TableName, TWith> = QueryWithInputForTable<
|
|
166
|
-
TName,
|
|
167
|
-
TWith
|
|
168
|
-
>;
|
|
169
|
-
|
|
170
|
-
export type QueryFindManyArgs<TName extends TableName> = Omit<
|
|
171
|
-
NonNullable<TableFindManyArgs<TName>>,
|
|
172
|
-
"where" | "with"
|
|
173
|
-
> & {
|
|
174
|
-
where?: WhereInput<TableModel<TName>>;
|
|
175
|
-
with?: QueryWithInput<TName, NativeFindManyWith<TName>>;
|
|
176
|
-
};
|
|
177
|
-
|
|
178
|
-
export type QueryFindFirstArgs<TName extends TableName> = Omit<
|
|
179
|
-
NonNullable<TableFindFirstArgs<TName>>,
|
|
180
|
-
"where" | "with"
|
|
181
|
-
> & {
|
|
182
|
-
where?: WhereInput<TableModel<TName>>;
|
|
183
|
-
with?: QueryWithInput<TName, NativeFindFirstWith<TName>>;
|
|
184
|
-
};
|
|
185
|
-
|
|
186
|
-
type RelationInsertItem<TTargetTable extends TableName> =
|
|
187
|
-
| TableModel<TTargetTable>
|
|
188
|
-
| TableInsertModel<TTargetTable>
|
|
189
|
-
| ("id" extends keyof TableModel<TTargetTable>
|
|
190
|
-
? TableModel<TTargetTable>["id"]
|
|
191
|
-
: never);
|
|
192
|
-
|
|
193
|
-
type RelationInsertValue<
|
|
194
|
-
TSourceTable extends TableName,
|
|
195
|
-
TRelationName extends RuntimeRelationName<TSourceTable>,
|
|
196
|
-
> = RuntimeRelationTargetTable<TSourceTable, TRelationName> extends infer TTargetTable
|
|
197
|
-
? TTargetTable extends TableName
|
|
198
|
-
? RuntimeRelationKind<TSourceTable, TRelationName> extends "one"
|
|
199
|
-
? RelationInsertItem<TTargetTable>
|
|
200
|
-
: RelationInsertItem<TTargetTable> | Array<RelationInsertItem<TTargetTable>>
|
|
201
|
-
: never
|
|
202
|
-
: never;
|
|
203
|
-
|
|
204
|
-
type RelationInsertFields<TName extends TableName> = {
|
|
205
|
-
[TRelationName in RuntimeRelationName<TName>]?: RelationInsertValue<
|
|
206
|
-
TName,
|
|
207
|
-
TRelationName
|
|
208
|
-
>;
|
|
209
|
-
};
|
|
210
|
-
|
|
211
|
-
type QueryInsertValue<TName extends TableName> = TableInsertScalarModel<TName> &
|
|
212
|
-
RelationInsertFields<TName>;
|
|
213
|
-
|
|
214
|
-
type InsertItemValue<TArgs> = TArgs extends { values: infer TValue }
|
|
215
|
-
? TValue extends Array<infer TItem>
|
|
216
|
-
? TItem
|
|
217
|
-
: TValue
|
|
218
|
-
: never;
|
|
219
|
-
|
|
220
|
-
type InsertRelationNameFromArgs<
|
|
221
|
-
TName extends TableName,
|
|
222
|
-
TArgs,
|
|
223
|
-
> = Extract<keyof InsertItemValue<TArgs>, RuntimeRelationName<TName>>;
|
|
224
|
-
|
|
225
|
-
type InsertRelationResultValue<
|
|
226
|
-
TSourceTable extends TableName,
|
|
227
|
-
TRelationName extends RuntimeRelationName<TSourceTable>,
|
|
228
|
-
> = RuntimeRelationTargetTable<TSourceTable, TRelationName> extends infer TTargetTable
|
|
229
|
-
? TTargetTable extends TableName
|
|
230
|
-
? RuntimeRelationKind<TSourceTable, TRelationName> extends "one"
|
|
231
|
-
? TableModel<TTargetTable> | null
|
|
232
|
-
: Array<TableModel<TTargetTable>>
|
|
233
|
-
: never
|
|
234
|
-
: never;
|
|
235
|
-
|
|
236
|
-
export type QueryInsertResultRow<
|
|
237
|
-
TName extends TableName,
|
|
238
|
-
TArgs extends QueryInsertArgs<TName>,
|
|
239
|
-
> = TableModel<TName> & {
|
|
240
|
-
[TRelationName in InsertRelationNameFromArgs<TName, TArgs>]:
|
|
241
|
-
InsertRelationResultValue<TName, TRelationName>;
|
|
242
|
-
};
|
|
243
|
-
|
|
244
|
-
export type QueryInsertArgs<TName extends TableName> = {
|
|
245
|
-
values: QueryInsertValue<TName> | Array<QueryInsertValue<TName>>;
|
|
246
|
-
};
|
|
247
|
-
|
|
248
|
-
export type QueryUpdateArgs<TName extends TableName> = {
|
|
249
|
-
set: Partial<TableInsertModel<TName>>;
|
|
250
|
-
where?: WhereInput<TableModel<TName>>;
|
|
251
|
-
limit?: number;
|
|
252
|
-
};
|
|
253
|
-
|
|
254
|
-
export type QueryDeleteArgs<TName extends TableName> = {
|
|
255
|
-
where?: WhereInput<TableModel<TName>>;
|
|
256
|
-
limit?: number;
|
|
257
|
-
};
|
|
258
|
-
`;
|
|
259
|
-
}
|
|
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
|
+
$gt?: number;
|
|
29
|
+
$gte?: number;
|
|
30
|
+
$lt?: number;
|
|
31
|
+
$lte?: number;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
type GeoWithinOperandForField<TFieldKey extends string> = Omit<
|
|
35
|
+
GeoWithinOperand,
|
|
36
|
+
"latitudeField" | "longitudeField"
|
|
37
|
+
> & {
|
|
38
|
+
latitudeField?: TFieldKey;
|
|
39
|
+
longitudeField?: TFieldKey;
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
type FieldOperators<T, TFieldKey extends string = string> = {
|
|
43
|
+
eq?: Friendly<NonNil<T>>;
|
|
44
|
+
$eq?: Friendly<NonNil<T>>;
|
|
45
|
+
ne?: Friendly<NonNil<T>>;
|
|
46
|
+
$ne?: Friendly<NonNil<T>>;
|
|
47
|
+
in?: ReadonlyArray<Friendly<NonNil<T>>>;
|
|
48
|
+
$in?: ReadonlyArray<Friendly<NonNil<T>>>;
|
|
49
|
+
nin?: ReadonlyArray<Friendly<NonNil<T>>>;
|
|
50
|
+
$nin?: ReadonlyArray<Friendly<NonNil<T>>>;
|
|
51
|
+
gt?: Comparable<T>;
|
|
52
|
+
$gt?: Comparable<T>;
|
|
53
|
+
gte?: Comparable<T>;
|
|
54
|
+
$gte?: Comparable<T>;
|
|
55
|
+
lt?: Comparable<T>;
|
|
56
|
+
$lt?: Comparable<T>;
|
|
57
|
+
lte?: Comparable<T>;
|
|
58
|
+
$lte?: Comparable<T>;
|
|
59
|
+
exists?: boolean;
|
|
60
|
+
regex?: RegexOperand<T>;
|
|
61
|
+
$options?: string;
|
|
62
|
+
geoWithin?: GeoWithinOperandForField<TFieldKey>;
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
type WhereFieldValue<T, TFieldKey extends string> =
|
|
66
|
+
| Friendly<NonNil<T>>
|
|
67
|
+
| FieldOperators<T, TFieldKey>;
|
|
68
|
+
|
|
69
|
+
export type WhereInput<TModel extends Record<string, unknown>> = {
|
|
70
|
+
[K in keyof TModel]?: WhereFieldValue<
|
|
71
|
+
TModel[K],
|
|
72
|
+
Extract<keyof TModel, string>
|
|
73
|
+
>;
|
|
74
|
+
} & {
|
|
75
|
+
geoWithin?: GeoWithinOperandForField<Extract<keyof TModel, string>>;
|
|
76
|
+
$geoWithin?: GeoWithinOperandForField<Extract<keyof TModel, string>>;
|
|
77
|
+
};
|
|
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 RelationModelFromConfig<TConfig extends Record<string, unknown>> =
|
|
94
|
+
InferRelationWhereFields<TConfig> extends infer TFields
|
|
95
|
+
? TFields extends Record<string, unknown>
|
|
96
|
+
? {
|
|
97
|
+
[K in Extract<keyof TFields, string>]: ColumnData<TFields[K]>;
|
|
98
|
+
}
|
|
99
|
+
: Record<string, unknown>
|
|
100
|
+
: Record<string, unknown>;
|
|
101
|
+
|
|
102
|
+
type NumericModelFieldKey<TModel extends Record<string, unknown>> = Extract<
|
|
103
|
+
{
|
|
104
|
+
[K in keyof TModel]-?: NonNullable<TModel[K]> extends number ? K : never;
|
|
105
|
+
}[keyof TModel],
|
|
106
|
+
string
|
|
107
|
+
>;
|
|
108
|
+
|
|
109
|
+
type RelationAvgSelectionInput<TModel extends Record<string, unknown>> =
|
|
110
|
+
Partial<Record<NumericModelFieldKey<TModel>, boolean>>;
|
|
111
|
+
|
|
112
|
+
type RelationAggregateSelectionInput<TModel extends Record<string, unknown>> = {
|
|
113
|
+
_count?: boolean;
|
|
114
|
+
_avg?: RelationAvgSelectionInput<TModel>;
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
type QueryNativeWithRelationInput<TEntry> =
|
|
118
|
+
| (Extract<TEntry, true> extends never ? never : true)
|
|
119
|
+
| (Extract<TEntry, Record<string, unknown>> extends infer TRelation
|
|
120
|
+
? TRelation extends Record<string, unknown>
|
|
121
|
+
? Omit<TRelation, "where" | "with" | "_count" | "_avg"> &
|
|
122
|
+
RelationAggregateSelectionInput<RelationModelFromConfig<TRelation>> & {
|
|
123
|
+
where?: WhereInput<RelationModelFromConfig<TRelation>>;
|
|
124
|
+
with?: TRelation extends { with?: infer TNestedWith }
|
|
125
|
+
? QueryWithInputForTable<TableName, TNestedWith>
|
|
126
|
+
: never;
|
|
127
|
+
}
|
|
128
|
+
: never
|
|
129
|
+
: never);
|
|
130
|
+
|
|
131
|
+
type QueryManyToManyWithRelationInput<TTargetTable extends TableName> =
|
|
132
|
+
| true
|
|
133
|
+
| (Omit<NonNullable<TableFindManyArgs<TTargetTable>>, "where" | "with"> &
|
|
134
|
+
RelationAggregateSelectionInput<TableModel<TTargetTable>> & {
|
|
135
|
+
where?: WhereInput<TableModel<TTargetTable>>;
|
|
136
|
+
with?: QueryWithInputForTable<
|
|
137
|
+
TTargetTable,
|
|
138
|
+
NativeFindManyWith<TTargetTable>
|
|
139
|
+
>;
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
type QueryWithRelationInputForTable<
|
|
143
|
+
TSourceTable extends TableName,
|
|
144
|
+
TRelationName extends string,
|
|
145
|
+
TEntry,
|
|
146
|
+
> = [ManyToManyTargetTableName<TSourceTable, TRelationName>] extends [never]
|
|
147
|
+
? QueryNativeWithRelationInput<TEntry>
|
|
148
|
+
: QueryManyToManyWithRelationInput<
|
|
149
|
+
Extract<ManyToManyTargetTableName<TSourceTable, TRelationName>, TableName>
|
|
150
|
+
>;
|
|
151
|
+
|
|
152
|
+
type QueryWithInputForTable<
|
|
153
|
+
TSourceTable extends TableName,
|
|
154
|
+
TWith,
|
|
155
|
+
> = TWith extends Record<string, unknown>
|
|
156
|
+
? {
|
|
157
|
+
[K in keyof TWith]?: QueryWithRelationInputForTable<
|
|
158
|
+
TSourceTable,
|
|
159
|
+
Extract<K, string>,
|
|
160
|
+
TWith[K]
|
|
161
|
+
>;
|
|
162
|
+
}
|
|
163
|
+
: TWith;
|
|
164
|
+
|
|
165
|
+
type QueryWithInput<TName extends TableName, TWith> = QueryWithInputForTable<
|
|
166
|
+
TName,
|
|
167
|
+
TWith
|
|
168
|
+
>;
|
|
169
|
+
|
|
170
|
+
export type QueryFindManyArgs<TName extends TableName> = Omit<
|
|
171
|
+
NonNullable<TableFindManyArgs<TName>>,
|
|
172
|
+
"where" | "with"
|
|
173
|
+
> & {
|
|
174
|
+
where?: WhereInput<TableModel<TName>>;
|
|
175
|
+
with?: QueryWithInput<TName, NativeFindManyWith<TName>>;
|
|
176
|
+
};
|
|
177
|
+
|
|
178
|
+
export type QueryFindFirstArgs<TName extends TableName> = Omit<
|
|
179
|
+
NonNullable<TableFindFirstArgs<TName>>,
|
|
180
|
+
"where" | "with"
|
|
181
|
+
> & {
|
|
182
|
+
where?: WhereInput<TableModel<TName>>;
|
|
183
|
+
with?: QueryWithInput<TName, NativeFindFirstWith<TName>>;
|
|
184
|
+
};
|
|
185
|
+
|
|
186
|
+
type RelationInsertItem<TTargetTable extends TableName> =
|
|
187
|
+
| TableModel<TTargetTable>
|
|
188
|
+
| TableInsertModel<TTargetTable>
|
|
189
|
+
| ("id" extends keyof TableModel<TTargetTable>
|
|
190
|
+
? TableModel<TTargetTable>["id"]
|
|
191
|
+
: never);
|
|
192
|
+
|
|
193
|
+
type RelationInsertValue<
|
|
194
|
+
TSourceTable extends TableName,
|
|
195
|
+
TRelationName extends RuntimeRelationName<TSourceTable>,
|
|
196
|
+
> = RuntimeRelationTargetTable<TSourceTable, TRelationName> extends infer TTargetTable
|
|
197
|
+
? TTargetTable extends TableName
|
|
198
|
+
? RuntimeRelationKind<TSourceTable, TRelationName> extends "one"
|
|
199
|
+
? RelationInsertItem<TTargetTable>
|
|
200
|
+
: RelationInsertItem<TTargetTable> | Array<RelationInsertItem<TTargetTable>>
|
|
201
|
+
: never
|
|
202
|
+
: never;
|
|
203
|
+
|
|
204
|
+
type RelationInsertFields<TName extends TableName> = {
|
|
205
|
+
[TRelationName in RuntimeRelationName<TName>]?: RelationInsertValue<
|
|
206
|
+
TName,
|
|
207
|
+
TRelationName
|
|
208
|
+
>;
|
|
209
|
+
};
|
|
210
|
+
|
|
211
|
+
type QueryInsertValue<TName extends TableName> = TableInsertScalarModel<TName> &
|
|
212
|
+
RelationInsertFields<TName>;
|
|
213
|
+
|
|
214
|
+
type InsertItemValue<TArgs> = TArgs extends { values: infer TValue }
|
|
215
|
+
? TValue extends Array<infer TItem>
|
|
216
|
+
? TItem
|
|
217
|
+
: TValue
|
|
218
|
+
: never;
|
|
219
|
+
|
|
220
|
+
type InsertRelationNameFromArgs<
|
|
221
|
+
TName extends TableName,
|
|
222
|
+
TArgs,
|
|
223
|
+
> = Extract<keyof InsertItemValue<TArgs>, RuntimeRelationName<TName>>;
|
|
224
|
+
|
|
225
|
+
type InsertRelationResultValue<
|
|
226
|
+
TSourceTable extends TableName,
|
|
227
|
+
TRelationName extends RuntimeRelationName<TSourceTable>,
|
|
228
|
+
> = RuntimeRelationTargetTable<TSourceTable, TRelationName> extends infer TTargetTable
|
|
229
|
+
? TTargetTable extends TableName
|
|
230
|
+
? RuntimeRelationKind<TSourceTable, TRelationName> extends "one"
|
|
231
|
+
? TableModel<TTargetTable> | null
|
|
232
|
+
: Array<TableModel<TTargetTable>>
|
|
233
|
+
: never
|
|
234
|
+
: never;
|
|
235
|
+
|
|
236
|
+
export type QueryInsertResultRow<
|
|
237
|
+
TName extends TableName,
|
|
238
|
+
TArgs extends QueryInsertArgs<TName>,
|
|
239
|
+
> = TableModel<TName> & {
|
|
240
|
+
[TRelationName in InsertRelationNameFromArgs<TName, TArgs>]:
|
|
241
|
+
InsertRelationResultValue<TName, TRelationName>;
|
|
242
|
+
};
|
|
243
|
+
|
|
244
|
+
export type QueryInsertArgs<TName extends TableName> = {
|
|
245
|
+
values: QueryInsertValue<TName> | Array<QueryInsertValue<TName>>;
|
|
246
|
+
};
|
|
247
|
+
|
|
248
|
+
export type QueryUpdateArgs<TName extends TableName> = {
|
|
249
|
+
set: Partial<TableInsertModel<TName>>;
|
|
250
|
+
where?: WhereInput<TableModel<TName>>;
|
|
251
|
+
limit?: number;
|
|
252
|
+
};
|
|
253
|
+
|
|
254
|
+
export type QueryDeleteArgs<TName extends TableName> = {
|
|
255
|
+
where?: WhereInput<TableModel<TName>>;
|
|
256
|
+
limit?: number;
|
|
257
|
+
};
|
|
258
|
+
`;
|
|
259
|
+
}
|