appflare 0.2.29 → 0.2.31

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 (140) hide show
  1. package/Documentation.md +758 -758
  2. package/cli/commands/index.ts +238 -238
  3. package/cli/generate.ts +178 -178
  4. package/cli/index.ts +120 -120
  5. package/cli/load-config.ts +184 -184
  6. package/cli/schema-compiler.ts +1183 -1183
  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 +748 -748
  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 +186 -186
  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 +171 -171
  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 +554 -554
  45. package/cli/templates/dashboard/builders/navigation.ts +122 -122
  46. package/cli/templates/dashboard/builders/storage/index.ts +13 -13
  47. package/cli/templates/dashboard/builders/storage/routes/create-directory-route.ts +29 -29
  48. package/cli/templates/dashboard/builders/storage/routes/delete-route.ts +18 -18
  49. package/cli/templates/dashboard/builders/storage/routes/download-route.ts +23 -23
  50. package/cli/templates/dashboard/builders/storage/routes/index.ts +22 -22
  51. package/cli/templates/dashboard/builders/storage/routes/list-route.ts +25 -25
  52. package/cli/templates/dashboard/builders/storage/routes/preview-route.ts +21 -21
  53. package/cli/templates/dashboard/builders/storage/routes/upload-route.ts +21 -21
  54. package/cli/templates/dashboard/builders/storage/runtime/helpers.ts +72 -72
  55. package/cli/templates/dashboard/builders/storage/runtime/storage-page.ts +130 -130
  56. package/cli/templates/dashboard/builders/table-routes/common/drawer-panel.ts +27 -27
  57. package/cli/templates/dashboard/builders/table-routes/common/pagination.ts +30 -30
  58. package/cli/templates/dashboard/builders/table-routes/common/search-bar.ts +23 -23
  59. package/cli/templates/dashboard/builders/table-routes/fragments.ts +217 -217
  60. package/cli/templates/dashboard/builders/table-routes/helpers.ts +45 -45
  61. package/cli/templates/dashboard/builders/table-routes/index.ts +8 -8
  62. package/cli/templates/dashboard/builders/table-routes/table/actions-cell.ts +71 -71
  63. package/cli/templates/dashboard/builders/table-routes/table/get-route.ts +291 -291
  64. package/cli/templates/dashboard/builders/table-routes/table/index.ts +80 -80
  65. package/cli/templates/dashboard/builders/table-routes/table/post-routes.ts +163 -163
  66. package/cli/templates/dashboard/builders/table-routes/table-route.ts +7 -7
  67. package/cli/templates/dashboard/builders/table-routes/users/get-route.ts +69 -69
  68. package/cli/templates/dashboard/builders/table-routes/users/html/modals.ts +57 -57
  69. package/cli/templates/dashboard/builders/table-routes/users/html/page.ts +27 -27
  70. package/cli/templates/dashboard/builders/table-routes/users/html/table.ts +128 -128
  71. package/cli/templates/dashboard/builders/table-routes/users/index.ts +32 -32
  72. package/cli/templates/dashboard/builders/table-routes/users/post-routes.ts +150 -150
  73. package/cli/templates/dashboard/builders/table-routes/users/redirect.ts +14 -14
  74. package/cli/templates/dashboard/builders/table-routes/users-route.ts +10 -10
  75. package/cli/templates/dashboard/components/dashboard-home.ts +23 -23
  76. package/cli/templates/dashboard/components/layout.ts +388 -388
  77. package/cli/templates/dashboard/components/login-page.ts +65 -65
  78. package/cli/templates/dashboard/index.ts +61 -61
  79. package/cli/templates/dashboard/types.ts +9 -9
  80. package/cli/templates/handlers/README.md +353 -353
  81. package/cli/templates/handlers/auth.ts +37 -37
  82. package/cli/templates/handlers/execution.ts +42 -42
  83. package/cli/templates/handlers/generators/context/context-creation.ts +101 -101
  84. package/cli/templates/handlers/generators/context/error-helpers.ts +11 -11
  85. package/cli/templates/handlers/generators/context/scheduler.ts +24 -24
  86. package/cli/templates/handlers/generators/context/storage-api.ts +82 -82
  87. package/cli/templates/handlers/generators/context/storage-helpers.ts +59 -59
  88. package/cli/templates/handlers/generators/context/types.ts +40 -40
  89. package/cli/templates/handlers/generators/context.ts +43 -43
  90. package/cli/templates/handlers/generators/execution.ts +15 -15
  91. package/cli/templates/handlers/generators/handlers.ts +13 -13
  92. package/cli/templates/handlers/generators/registration/modules/cron.ts +26 -26
  93. package/cli/templates/handlers/generators/registration/modules/realtime/auth.ts +75 -75
  94. package/cli/templates/handlers/generators/registration/modules/realtime/durable-object.ts +144 -144
  95. package/cli/templates/handlers/generators/registration/modules/realtime/index.ts +14 -14
  96. package/cli/templates/handlers/generators/registration/modules/realtime/publisher.ts +102 -102
  97. package/cli/templates/handlers/generators/registration/modules/realtime/routes.ts +164 -164
  98. package/cli/templates/handlers/generators/registration/modules/realtime/types.ts +30 -30
  99. package/cli/templates/handlers/generators/registration/modules/realtime/utils.ts +516 -516
  100. package/cli/templates/handlers/generators/registration/modules/scheduler.ts +56 -56
  101. package/cli/templates/handlers/generators/registration/modules/storage.ts +199 -199
  102. package/cli/templates/handlers/generators/registration/sections.ts +210 -210
  103. package/cli/templates/handlers/generators/types/context.ts +92 -92
  104. package/cli/templates/handlers/generators/types/core.ts +106 -106
  105. package/cli/templates/handlers/generators/types/operations.ts +135 -135
  106. package/cli/templates/handlers/generators/types/query-definitions/filter-and-where-types.ts +281 -259
  107. package/cli/templates/handlers/generators/types/query-definitions/query-api-types.ts +135 -135
  108. package/cli/templates/handlers/generators/types/query-definitions/query-helper-functions.ts +1103 -1031
  109. package/cli/templates/handlers/generators/types/query-definitions/schema-and-table-types.ts +278 -246
  110. package/cli/templates/handlers/generators/types/query-definitions.ts +13 -13
  111. package/cli/templates/handlers/generators/types/query-runtime/handled-error.ts +13 -13
  112. package/cli/templates/handlers/generators/types/query-runtime/runtime-aggregate-and-footer.ts +174 -174
  113. package/cli/templates/handlers/generators/types/query-runtime/runtime-read.ts +157 -121
  114. package/cli/templates/handlers/generators/types/query-runtime/runtime-setup.ts +45 -45
  115. package/cli/templates/handlers/generators/types/query-runtime/runtime-write.ts +697 -676
  116. package/cli/templates/handlers/generators/types/query-runtime.ts +15 -15
  117. package/cli/templates/handlers/index.ts +43 -43
  118. package/cli/templates/handlers/operations.ts +116 -116
  119. package/cli/templates/handlers/registration.ts +91 -91
  120. package/cli/templates/handlers/types.ts +15 -15
  121. package/cli/templates/handlers/utils.ts +48 -48
  122. package/cli/types.ts +110 -110
  123. package/cli/utils/handler-discovery.ts +466 -466
  124. package/cli/utils/json-utils.ts +24 -24
  125. package/cli/utils/path-utils.ts +19 -19
  126. package/cli/utils/schema-discovery.ts +399 -399
  127. package/dist/cli/index.d.mts +2 -0
  128. package/dist/cli/index.d.ts +2 -0
  129. package/dist/cli/index.js +301 -118
  130. package/dist/cli/index.mjs +301 -118
  131. package/index.ts +18 -18
  132. package/package.json +58 -58
  133. package/react/index.ts +5 -5
  134. package/react/use-infinite-query.ts +252 -252
  135. package/react/use-mutation.ts +89 -89
  136. package/react/use-query.ts +207 -207
  137. package/schema.ts +415 -415
  138. package/test-better-auth-hash.ts +2 -2
  139. package/tsconfig.json +6 -6
  140. package/tsup.config.ts +82 -82
@@ -1,246 +1,278 @@
1
- export function generateSchemaAndTableTypesSection(): string {
2
- return `const mergedSchema = {
3
- ...authSchema,
4
- ...schema,
5
- };
6
-
7
- export const createDb = (database: D1Database) =>
8
- drizzle(database, { schema: mergedSchema });
9
-
10
- export type AppflareDb = ReturnType<typeof createDb>;
11
-
12
- type SchemaRelations = ExtractTablesWithRelations<typeof mergedSchema>;
13
- type TableName = Extract<keyof SchemaRelations, string>;
14
- type TableRelationConfig<TName extends TableName> =
15
- TName extends keyof SchemaRelations ? SchemaRelations[TName] : never;
16
- type TableFindManyArgs<TName extends TableName> = DBQueryConfig<
17
- "many",
18
- true,
19
- SchemaRelations,
20
- TableRelationConfig<TName>
21
- >;
22
- type NativeFindManyWith<TName extends TableName> =
23
- NonNullable<TableFindManyArgs<TName>> extends { with?: infer TWith }
24
- ? TWith
25
- : never;
26
- type ResolveNativeFindManyWith<
27
- TName extends TableName,
28
- TArgs extends QueryFindManyArgs<TName> | undefined,
29
- > = TArgs extends { with?: infer TWith }
30
- ? Extract<TWith, NativeFindManyWith<TName>> extends infer TResolved
31
- ? [TResolved] extends [never]
32
- ? TWith extends Record<string, unknown>
33
- ? NativeFindManyWith<TName>
34
- : never
35
- : TResolved
36
- : never
37
- : never;
38
- type ResolveTableFindManySelection<
39
- TName extends TableName,
40
- TArgs extends QueryFindManyArgs<TName> | undefined,
41
- > = TArgs extends undefined
42
- ? true
43
- : Omit<TArgs, "where" | "with"> &
44
- (ResolveNativeFindManyWith<TName, TArgs> extends never
45
- ? {}
46
- : { with: ResolveNativeFindManyWith<TName, TArgs> });
47
- type TableModel<TName extends TableName> = InferSelectModel<
48
- (typeof mergedSchema)[TName]
49
- >;
50
- type ManyToManySchemaMap = typeof schema extends {
51
- __appflareManyToMany: infer TMap extends Record<string, unknown>;
52
- }
53
- ? TMap
54
- : {};
55
- type ManyToManySourceTableMap<TSourceTable extends TableName> =
56
- TSourceTable extends keyof ManyToManySchemaMap
57
- ? ManyToManySchemaMap[TSourceTable] extends Record<string, unknown>
58
- ? ManyToManySchemaMap[TSourceTable]
59
- : {}
60
- : {};
61
- type ManyToManyTargetTableName<
62
- TSourceTable extends TableName,
63
- TRelationName extends string,
64
- > = TRelationName extends keyof ManyToManySourceTableMap<TSourceTable>
65
- ? ManyToManySourceTableMap<TSourceTable>[TRelationName] extends {
66
- targetTable: infer TTarget extends string;
67
- }
68
- ? Extract<TTarget, TableName>
69
- : never
70
- : never;
71
- type RuntimeRelationsSchemaMap = typeof schema extends {
72
- __appflareRelations: infer TMap extends Record<string, unknown>;
73
- }
74
- ? TMap
75
- : {};
76
- type RuntimeRelationsSourceTableMap<TSourceTable extends TableName> =
77
- TSourceTable extends keyof RuntimeRelationsSchemaMap
78
- ? RuntimeRelationsSchemaMap[TSourceTable] extends Record<string, unknown>
79
- ? RuntimeRelationsSchemaMap[TSourceTable]
80
- : {}
81
- : {};
82
- type RuntimeRelationName<TSourceTable extends TableName> =
83
- Extract<keyof RuntimeRelationsSourceTableMap<TSourceTable>, string>;
84
- type RuntimeRelationConfig<
85
- TSourceTable extends TableName,
86
- TRelationName extends string,
87
- > = TRelationName extends keyof RuntimeRelationsSourceTableMap<TSourceTable>
88
- ? RuntimeRelationsSourceTableMap<TSourceTable>[TRelationName]
89
- : never;
90
- type RuntimeRelationKind<
91
- TSourceTable extends TableName,
92
- TRelationName extends string,
93
- > = RuntimeRelationConfig<TSourceTable, TRelationName> extends {
94
- kind: infer TKind extends string;
95
- }
96
- ? TKind
97
- : never;
98
- type RuntimeRelationTargetTable<
99
- TSourceTable extends TableName,
100
- TRelationName extends string,
101
- > = RuntimeRelationConfig<TSourceTable, TRelationName> extends {
102
- targetTable: infer TTarget extends string;
103
- }
104
- ? Extract<TTarget, TableName>
105
- : never;
106
- type TableInsertScalarModel<TName extends TableName> = TableInsertModel<TName>;
107
- type FindManyWithFromArgs<TArgs> = TArgs extends { with?: infer TWith }
108
- ? TWith
109
- : undefined;
110
- type ManyToManyRelationRows<
111
- TTargetTable extends TableName,
112
- TRelationArgs,
113
- > = TRelationArgs extends true
114
- ? Array<TableModel<TTargetTable>>
115
- : TRelationArgs extends Record<string, unknown>
116
- ? Awaited<
117
- TableFindManyResult<
118
- TTargetTable,
119
- Extract<
120
- Omit<TRelationArgs, "_count" | "_avg">,
121
- QueryFindManyArgs<TTargetTable>
122
- >
123
- >
124
- >
125
- : Array<TableModel<TTargetTable>>;
126
- type ReplaceManyToManyRelationsInRow<
127
- TSourceTable extends TableName,
128
- TRow,
129
- TWith,
130
- > = TRow extends Record<string, unknown>
131
- ? {
132
- [K in keyof TRow]: K extends string
133
- ? TWith extends Record<string, unknown>
134
- ? K extends keyof TWith
135
- ? [ManyToManyTargetTableName<TSourceTable, K>] extends [never]
136
- ? TRow[K]
137
- : ManyToManyRelationRows<
138
- Extract<ManyToManyTargetTableName<TSourceTable, K>, TableName>,
139
- TWith[K]
140
- >
141
- : TRow[K]
142
- : TRow[K]
143
- : TRow[K];
144
- }
145
- : TRow;
146
- type ApplyManyToManyFindManyResult<
147
- TSourceTable extends TableName,
148
- TArgs extends QueryFindManyArgs<TSourceTable> | undefined,
149
- TResult,
150
- > = TResult extends Promise<infer TRows>
151
- ? TRows extends Array<infer TRow>
152
- ? Promise<
153
- Array<
154
- ReplaceManyToManyRelationsInRow<
155
- TSourceTable,
156
- TRow,
157
- FindManyWithFromArgs<TArgs>
158
- >
159
- >
160
- >
161
- : TResult
162
- : TResult;
163
- type ApplyManyToManyFindFirstResult<
164
- TSourceTable extends TableName,
165
- TArgs extends QueryFindFirstArgs<TSourceTable> | undefined,
166
- TResult,
167
- > = TResult extends Promise<infer TRow>
168
- ? Promise<
169
- TRow extends null
170
- ? null
171
- : ReplaceManyToManyRelationsInRow<
172
- TSourceTable,
173
- TRow,
174
- FindManyWithFromArgs<TArgs>
175
- >
176
- >
177
- : TResult;
178
- type TableFindManyResult<
179
- TName extends TableName,
180
- TArgs extends QueryFindManyArgs<TName> | undefined =
181
- | QueryFindManyArgs<TName>
182
- | undefined,
183
- > = ApplyManyToManyFindManyResult<
184
- TName,
185
- TArgs,
186
- TArgs extends undefined
187
- ? Promise<Array<TableModel<TName>>>
188
- : Promise<
189
- Array<
190
- BuildQueryResult<
191
- SchemaRelations,
192
- TableRelationConfig<TName>,
193
- ResolveTableFindManySelection<TName, TArgs>
194
- >
195
- >
196
- >
197
- >;
198
- type TableFindFirstArgs<TName extends TableName> = Omit<
199
- TableFindManyArgs<TName>,
200
- "limit"
201
- >;
202
- type NativeFindFirstWith<TName extends TableName> = NativeFindManyWith<TName>;
203
- type ResolveNativeFindFirstWith<
204
- TName extends TableName,
205
- TArgs extends QueryFindFirstArgs<TName> | undefined,
206
- > = TArgs extends { with?: infer TWith }
207
- ? Extract<TWith, NativeFindFirstWith<TName>> extends infer TResolved
208
- ? [TResolved] extends [never]
209
- ? TWith extends Record<string, unknown>
210
- ? NativeFindFirstWith<TName>
211
- : never
212
- : TResolved
213
- : never
214
- : never;
215
- type ResolveTableFindFirstSelection<
216
- TName extends TableName,
217
- TArgs extends QueryFindFirstArgs<TName> | undefined,
218
- > = TArgs extends undefined
219
- ? true
220
- : Omit<TArgs, "where" | "with"> &
221
- (ResolveNativeFindFirstWith<TName, TArgs> extends never
222
- ? {}
223
- : { with: ResolveNativeFindFirstWith<TName, TArgs> });
224
- type TableFindFirstResult<
225
- TName extends TableName,
226
- TArgs extends QueryFindFirstArgs<TName> | undefined =
227
- | QueryFindFirstArgs<TName>
228
- | undefined,
229
- > = ApplyManyToManyFindFirstResult<
230
- TName,
231
- TArgs,
232
- TArgs extends undefined
233
- ? Promise<TableModel<TName> | null>
234
- : Promise<
235
- BuildQueryResult<
236
- SchemaRelations,
237
- TableRelationConfig<TName>,
238
- ResolveTableFindFirstSelection<TName, TArgs>
239
- > | null
240
- >
241
- >;
242
- type TableInsertModel<TName extends TableName> = InferInsertModel<
243
- (typeof mergedSchema)[TName]
244
- >;
245
- `;
246
- }
1
+ export function generateSchemaAndTableTypesSection(): string {
2
+ return `const mergedSchema = {
3
+ ...authSchema,
4
+ ...schema,
5
+ };
6
+
7
+ export const createDb = (database: D1Database) =>
8
+ drizzle(database, { schema: mergedSchema });
9
+
10
+ export type AppflareDb = ReturnType<typeof createDb>;
11
+
12
+ type SchemaRelations = ExtractTablesWithRelations<typeof mergedSchema>;
13
+ type TableName = Extract<keyof SchemaRelations, string>;
14
+ type TableRelationConfig<TName extends TableName> =
15
+ TName extends keyof SchemaRelations ? SchemaRelations[TName] : never;
16
+ type TableFindManyArgs<TName extends TableName> = DBQueryConfig<
17
+ "many",
18
+ true,
19
+ SchemaRelations,
20
+ TableRelationConfig<TName>
21
+ >;
22
+ type NativeFindManyWith<TName extends TableName> =
23
+ NonNullable<TableFindManyArgs<TName>> extends { with?: infer TWith }
24
+ ? TWith
25
+ : never;
26
+ type NormalizeWhereInWith<TWith, TNativeWith> = TWith extends Record<string, unknown>
27
+ ? {
28
+ [K in keyof TWith]: K extends keyof TNativeWith
29
+ ? TWith[K] extends Record<string, unknown>
30
+ ? Omit<TWith[K], 'where'> & { where?: NonNullable<Extract<TNativeWith[K], Record<string, unknown>>['where']> } & (TWith[K] extends { with: infer TNestedWith }
31
+ ? { with: NormalizeWhereInWith<TNestedWith, TNativeWith[K]> }
32
+ : {})
33
+ : TWith[K]
34
+ : TWith[K];
35
+ }
36
+ : TWith;
37
+
38
+ type ResolveNativeFindManyWith<
39
+ TName extends TableName,
40
+ TArgs extends QueryFindManyArgs<TName> | undefined,
41
+ > = TArgs extends { with?: infer TWith }
42
+ ? Extract<TWith, NativeFindManyWith<TName>> extends infer TResolved
43
+ ? [TResolved] extends [never]
44
+ ? TWith extends Record<string, unknown>
45
+ ? NormalizeWhereInWith<TWith, NativeFindManyWith<TName>>
46
+ : never
47
+ : TResolved
48
+ : never
49
+ : never;
50
+ type ResolveTableFindManySelection<
51
+ TName extends TableName,
52
+ TArgs extends QueryFindManyArgs<TName> | undefined,
53
+ > = TArgs extends undefined
54
+ ? true
55
+ : Omit<TArgs, "where" | "with"> &
56
+ (ResolveNativeFindManyWith<TName, TArgs> extends never
57
+ ? {}
58
+ : { with: ResolveNativeFindManyWith<TName, TArgs> });
59
+ type TableModel<TName extends TableName> = InferSelectModel<
60
+ (typeof mergedSchema)[TName]
61
+ >;
62
+ type ManyToManySchemaMap = typeof schema extends {
63
+ __appflareManyToMany: infer TMap extends Record<string, unknown>;
64
+ }
65
+ ? TMap
66
+ : {};
67
+ type ManyToManySourceTableMap<TSourceTable extends TableName> =
68
+ TSourceTable extends keyof ManyToManySchemaMap
69
+ ? ManyToManySchemaMap[TSourceTable] extends Record<string, unknown>
70
+ ? ManyToManySchemaMap[TSourceTable]
71
+ : {}
72
+ : {};
73
+ type ManyToManyTargetTableName<
74
+ TSourceTable extends TableName,
75
+ TRelationName extends string,
76
+ > = TRelationName extends keyof ManyToManySourceTableMap<TSourceTable>
77
+ ? ManyToManySourceTableMap<TSourceTable>[TRelationName] extends {
78
+ targetTable: infer TTarget extends string;
79
+ }
80
+ ? Extract<TTarget, TableName>
81
+ : never
82
+ : never;
83
+ type RuntimeRelationsSchemaMap = typeof schema extends {
84
+ __appflareRelations: infer TMap extends Record<string, unknown>;
85
+ }
86
+ ? TMap
87
+ : {};
88
+ type RuntimeRelationsSourceTableMap<TSourceTable extends TableName> =
89
+ TSourceTable extends keyof RuntimeRelationsSchemaMap
90
+ ? RuntimeRelationsSchemaMap[TSourceTable] extends Record<string, unknown>
91
+ ? RuntimeRelationsSchemaMap[TSourceTable]
92
+ : {}
93
+ : {};
94
+ type RuntimeRelationName<TSourceTable extends TableName> =
95
+ Extract<keyof RuntimeRelationsSourceTableMap<TSourceTable>, string>;
96
+ type RuntimeRelationConfig<
97
+ TSourceTable extends TableName,
98
+ TRelationName extends string,
99
+ > = TRelationName extends keyof RuntimeRelationsSourceTableMap<TSourceTable>
100
+ ? RuntimeRelationsSourceTableMap<TSourceTable>[TRelationName]
101
+ : never;
102
+ type RuntimeRelationKind<
103
+ TSourceTable extends TableName,
104
+ TRelationName extends string,
105
+ > = RuntimeRelationConfig<TSourceTable, TRelationName> extends {
106
+ kind: infer TKind extends string;
107
+ }
108
+ ? TKind
109
+ : never;
110
+ type RuntimeRelationTargetTable<
111
+ TSourceTable extends TableName,
112
+ TRelationName extends string,
113
+ > = RuntimeRelationConfig<TSourceTable, TRelationName> extends {
114
+ targetTable: infer TTarget extends string;
115
+ }
116
+ ? Extract<TTarget, TableName>
117
+ : never;
118
+
119
+ type TargetTableForRelation<
120
+ TSource extends TableName,
121
+ TRelation extends string,
122
+ > = RuntimeRelationTargetTable<TSource, TRelation> extends never
123
+ ? ManyToManyTargetTableName<TSource, TRelation> extends never
124
+ ? never
125
+ : Extract<ManyToManyTargetTableName<TSource, TRelation>, TableName>
126
+ : RuntimeRelationTargetTable<TSource, TRelation>;
127
+
128
+ type TableInsertScalarModel<TName extends TableName> = TableInsertModel<TName>;
129
+ type FindManyWithFromArgs<TArgs> = TArgs extends { with?: infer TWith }
130
+ ? TWith
131
+ : undefined;
132
+ type ManyToManyRelationRows<
133
+ TTargetTable extends TableName,
134
+ TRelationArgs,
135
+ > = TRelationArgs extends true
136
+ ? Array<TableModel<TTargetTable>>
137
+ : TRelationArgs extends Record<string, unknown>
138
+ ? Awaited<
139
+ TableFindManyResult<
140
+ TTargetTable,
141
+ Extract<
142
+ Omit<TRelationArgs, "_count" | "_avg">,
143
+ QueryFindManyArgs<TTargetTable>
144
+ >
145
+ >
146
+ >
147
+ : Array<TableModel<TTargetTable>>;
148
+ type ReplaceManyToManyRelationsInRow<
149
+ TSourceTable extends string,
150
+ TRow,
151
+ TWith,
152
+ > = TRow extends Record<string, unknown>
153
+ ? {
154
+ [K in keyof TRow]: K extends string
155
+ ? TWith extends Record<string, unknown>
156
+ ? K extends keyof TWith
157
+ ? [ManyToManyTargetTableName<Extract<TSourceTable, TableName>, K>] extends [never]
158
+ ? ReplaceManyToManyRelationsInRow<
159
+ [RuntimeRelationTargetTable<Extract<TSourceTable, TableName>, K>] extends [never]
160
+ ? K
161
+ : RuntimeRelationTargetTable<Extract<TSourceTable, TableName>, K>,
162
+ TRow[K],
163
+ TWith[K] extends { with: infer TNestedWith }
164
+ ? TNestedWith
165
+ : undefined
166
+ >
167
+ : ManyToManyRelationRows<
168
+ Extract<ManyToManyTargetTableName<Extract<TSourceTable, TableName>, K>, TableName>,
169
+ TWith[K]
170
+ >
171
+ : TRow[K]
172
+ : TRow[K]
173
+ : TRow[K];
174
+ }
175
+ : TRow extends Array<infer TEntry>
176
+ ? Array<ReplaceManyToManyRelationsInRow<TSourceTable, TEntry, TWith>>
177
+ : TRow;
178
+ type ApplyManyToManyFindManyResult<
179
+ TSourceTable extends TableName,
180
+ TArgs extends QueryFindManyArgs<TSourceTable> | undefined,
181
+ TResult,
182
+ > = TResult extends Promise<infer TRows>
183
+ ? TRows extends Array<infer TRow>
184
+ ? Promise<
185
+ Array<
186
+ ReplaceManyToManyRelationsInRow<
187
+ TSourceTable,
188
+ TRow,
189
+ FindManyWithFromArgs<TArgs>
190
+ >
191
+ >
192
+ >
193
+ : TResult
194
+ : TResult;
195
+ type ApplyManyToManyFindFirstResult<
196
+ TSourceTable extends TableName,
197
+ TArgs extends QueryFindFirstArgs<TSourceTable> | undefined,
198
+ TResult,
199
+ > = TResult extends Promise<infer TRow>
200
+ ? Promise<
201
+ TRow extends null
202
+ ? null
203
+ : ReplaceManyToManyRelationsInRow<
204
+ TSourceTable,
205
+ TRow,
206
+ FindManyWithFromArgs<TArgs>
207
+ >
208
+ >
209
+ : TResult;
210
+ type TableFindManyResult<
211
+ TName extends TableName,
212
+ TArgs extends QueryFindManyArgs<TName> | undefined =
213
+ | QueryFindManyArgs<TName>
214
+ | undefined,
215
+ > = ApplyManyToManyFindManyResult<
216
+ TName,
217
+ TArgs,
218
+ TArgs extends undefined
219
+ ? Promise<Array<TableModel<TName>>>
220
+ : Promise<
221
+ Array<
222
+ BuildQueryResult<
223
+ SchemaRelations,
224
+ TableRelationConfig<TName>,
225
+ ResolveTableFindManySelection<TName, TArgs>
226
+ >
227
+ >
228
+ >
229
+ >;
230
+ type TableFindFirstArgs<TName extends TableName> = Omit<
231
+ TableFindManyArgs<TName>,
232
+ "limit"
233
+ >;
234
+ type NativeFindFirstWith<TName extends TableName> = NativeFindManyWith<TName>;
235
+ type ResolveNativeFindFirstWith<
236
+ TName extends TableName,
237
+ TArgs extends QueryFindFirstArgs<TName> | undefined,
238
+ > = TArgs extends { with?: infer TWith }
239
+ ? Extract<TWith, NativeFindFirstWith<TName>> extends infer TResolved
240
+ ? [TResolved] extends [never]
241
+ ? TWith extends Record<string, unknown>
242
+ ? NormalizeWhereInWith<TWith, NativeFindFirstWith<TName>>
243
+ : never
244
+ : TResolved
245
+ : never
246
+ : never;
247
+ type ResolveTableFindFirstSelection<
248
+ TName extends TableName,
249
+ TArgs extends QueryFindFirstArgs<TName> | undefined,
250
+ > = TArgs extends undefined
251
+ ? true
252
+ : Omit<TArgs, "where" | "with"> &
253
+ (ResolveNativeFindFirstWith<TName, TArgs> extends never
254
+ ? {}
255
+ : { with: ResolveNativeFindFirstWith<TName, TArgs> });
256
+ type TableFindFirstResult<
257
+ TName extends TableName,
258
+ TArgs extends QueryFindFirstArgs<TName> | undefined =
259
+ | QueryFindFirstArgs<TName>
260
+ | undefined,
261
+ > = ApplyManyToManyFindFirstResult<
262
+ TName,
263
+ TArgs,
264
+ TArgs extends undefined
265
+ ? Promise<TableModel<TName> | null>
266
+ : Promise<
267
+ BuildQueryResult<
268
+ SchemaRelations,
269
+ TableRelationConfig<TName>,
270
+ ResolveTableFindFirstSelection<TName, TArgs>
271
+ > | null
272
+ >
273
+ >;
274
+ type TableInsertModel<TName extends TableName> = InferInsertModel<
275
+ (typeof mergedSchema)[TName]
276
+ >;
277
+ `;
278
+ }
@@ -1,13 +1,13 @@
1
- import { generateFilterAndWhereTypesSection } from "./query-definitions/filter-and-where-types";
2
- import { generateQueryApiTypesSection } from "./query-definitions/query-api-types";
3
- import { generateQueryHelperFunctionsSection } from "./query-definitions/query-helper-functions";
4
- import { generateSchemaAndTableTypesSection } from "./query-definitions/schema-and-table-types";
5
-
6
- export function generateTypesQueryDefinitionsSection(): string {
7
- return [
8
- generateSchemaAndTableTypesSection(),
9
- generateFilterAndWhereTypesSection(),
10
- generateQueryApiTypesSection(),
11
- generateQueryHelperFunctionsSection(),
12
- ].join("\n\n");
13
- }
1
+ import { generateFilterAndWhereTypesSection } from "./query-definitions/filter-and-where-types";
2
+ import { generateQueryApiTypesSection } from "./query-definitions/query-api-types";
3
+ import { generateQueryHelperFunctionsSection } from "./query-definitions/query-helper-functions";
4
+ import { generateSchemaAndTableTypesSection } from "./query-definitions/schema-and-table-types";
5
+
6
+ export function generateTypesQueryDefinitionsSection(): string {
7
+ return [
8
+ generateSchemaAndTableTypesSection(),
9
+ generateFilterAndWhereTypesSection(),
10
+ generateQueryApiTypesSection(),
11
+ generateQueryHelperFunctionsSection(),
12
+ ].join("\n\n");
13
+ }
@@ -1,13 +1,13 @@
1
- export function generateQueryRuntimeHandledErrorSection(): string {
2
- return `export class AppflareHandledError extends Error {
3
- public readonly status: number;
4
- public readonly payload: unknown;
5
-
6
- public constructor(status: number, payload: unknown) {
7
- super(typeof payload === "object" ? "Handled error" : String(payload));
8
- this.status = status;
9
- this.payload = payload;
10
- }
11
- }
12
- `;
13
- }
1
+ export function generateQueryRuntimeHandledErrorSection(): string {
2
+ return `export class AppflareHandledError extends Error {
3
+ public readonly status: number;
4
+ public readonly payload: unknown;
5
+
6
+ public constructor(status: number, payload: unknown) {
7
+ super(typeof payload === "object" ? "Handled error" : String(payload));
8
+ this.status = status;
9
+ this.payload = payload;
10
+ }
11
+ }
12
+ `;
13
+ }