appflare 0.1.12 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/Documentation.md +735 -0
  2. package/cli/generate.ts +1 -1
  3. package/cli/templates/auth/README.md +3 -3
  4. package/cli/templates/auth/route-config.ts +1 -18
  5. package/cli/templates/auth/route-handler.ts +1 -18
  6. package/cli/templates/auth/route-request-utils.ts +2 -52
  7. package/cli/templates/auth/route.config.ts +18 -0
  8. package/cli/templates/auth/route.handler.ts +18 -0
  9. package/cli/templates/auth/route.request-utils.ts +55 -0
  10. package/cli/templates/auth/route.ts +2 -2
  11. package/cli/templates/core/README.md +2 -2
  12. package/cli/templates/core/client/appflare.ts +78 -3
  13. package/cli/templates/core/client/handlers.ts +1 -0
  14. package/cli/templates/core/client/index.ts +1 -0
  15. package/cli/templates/core/client/storage.ts +85 -5
  16. package/cli/templates/core/client/types.ts +91 -0
  17. package/cli/templates/core/client-modules/appflare.ts +1 -112
  18. package/cli/templates/core/client-modules/handlers.ts +1 -1
  19. package/cli/templates/core/client-modules/index.ts +1 -7
  20. package/cli/templates/core/client-modules/storage.ts +1 -180
  21. package/cli/templates/core/client-modules/types.ts +1 -145
  22. package/cli/templates/core/client.artifacts.ts +39 -0
  23. package/cli/templates/core/client.ts +4 -39
  24. package/cli/templates/core/server.ts +1 -1
  25. package/cli/templates/handlers/generators/registration/modules/realtime/publisher.ts +2 -5
  26. package/cli/templates/handlers/generators/registration/modules/realtime/routes.ts +4 -11
  27. package/cli/templates/handlers/generators/types/query-definitions.ts +74 -18
  28. package/cli/templates/handlers/generators/types/query-runtime.ts +20 -4
  29. package/package.json +1 -1
  30. /package/cli/templates/core/{client-modules → client}/handlers/index.ts +0 -0
  31. /package/cli/templates/core/{handlers-route.ts → handlers.route.ts} +0 -0
@@ -17,21 +17,83 @@ type TableFindManyArgs<TName extends TableName> = TableQuery<TName> extends {
17
17
  }
18
18
  ? TArgs
19
19
  : never;
20
- type TableFindManyResult<TName extends TableName> = TableQuery<TName> extends {
21
- findMany: (args?: unknown) => infer TResult;
20
+ type TableFindManyMethod<TName extends TableName> = TableQuery<TName> extends {
21
+ findMany: infer TMethod;
22
22
  }
23
+ ? TMethod
24
+ : never;
25
+ type NativeFindManyWith<TName extends TableName> =
26
+ NonNullable<TableFindManyArgs<TName>> extends { with?: infer TWith }
27
+ ? TWith
28
+ : never;
29
+ type ResolveNativeFindManyWith<
30
+ TName extends TableName,
31
+ TArgs extends QueryFindManyArgs<TName> | undefined,
32
+ > = TArgs extends { with?: infer TWith }
33
+ ? Extract<TWith, NativeFindManyWith<TName>>
34
+ : never;
35
+ type ResolveTableFindManyArgs<
36
+ TName extends TableName,
37
+ TArgs extends QueryFindManyArgs<TName> | undefined,
38
+ > = TArgs extends undefined
39
+ ? undefined
40
+ : Omit<NonNullable<TableFindManyArgs<TName>>, "where" | "with"> &
41
+ (ResolveNativeFindManyWith<TName, TArgs> extends never
42
+ ? {}
43
+ : { with?: ResolveNativeFindManyWith<TName, TArgs> });
44
+ type TableFindManyResult<
45
+ TName extends TableName,
46
+ TArgs extends QueryFindManyArgs<TName> | undefined =
47
+ | QueryFindManyArgs<TName>
48
+ | undefined,
49
+ > = TableFindManyMethod<TName> extends (
50
+ args?: ResolveTableFindManyArgs<TName, TArgs>,
51
+ ) => infer TResult
23
52
  ? TResult
24
- : Promise<Array<TableModel<TName>>>;
53
+ : TableFindManyMethod<TName> extends (args?: unknown) => infer TResult
54
+ ? TResult
55
+ : Promise<Array<TableModel<TName>>>;
25
56
  type TableFindFirstArgs<TName extends TableName> = TableQuery<TName> extends {
26
57
  findFirst: (args?: infer TArgs) => Promise<unknown>;
27
58
  }
28
59
  ? TArgs
29
60
  : never;
30
- type TableFindFirstResult<TName extends TableName> = TableQuery<TName> extends {
31
- findFirst: (args?: unknown) => infer TResult;
61
+ type TableFindFirstMethod<TName extends TableName> = TableQuery<TName> extends {
62
+ findFirst: infer TMethod;
32
63
  }
64
+ ? TMethod
65
+ : never;
66
+ type NativeFindFirstWith<TName extends TableName> =
67
+ NonNullable<TableFindFirstArgs<TName>> extends { with?: infer TWith }
68
+ ? TWith
69
+ : never;
70
+ type ResolveNativeFindFirstWith<
71
+ TName extends TableName,
72
+ TArgs extends QueryFindFirstArgs<TName> | undefined,
73
+ > = TArgs extends { with?: infer TWith }
74
+ ? Extract<TWith, NativeFindFirstWith<TName>>
75
+ : never;
76
+ type ResolveTableFindFirstArgs<
77
+ TName extends TableName,
78
+ TArgs extends QueryFindFirstArgs<TName> | undefined,
79
+ > = TArgs extends undefined
80
+ ? undefined
81
+ : Omit<NonNullable<TableFindFirstArgs<TName>>, "where" | "with"> &
82
+ (ResolveNativeFindFirstWith<TName, TArgs> extends never
83
+ ? {}
84
+ : { with?: ResolveNativeFindFirstWith<TName, TArgs> });
85
+ type TableFindFirstResult<
86
+ TName extends TableName,
87
+ TArgs extends QueryFindFirstArgs<TName> | undefined =
88
+ | QueryFindFirstArgs<TName>
89
+ | undefined,
90
+ > = TableFindFirstMethod<TName> extends (
91
+ args?: ResolveTableFindFirstArgs<TName, TArgs>,
92
+ ) => infer TResult
33
93
  ? TResult
34
- : Promise<TableModel<TName> | null>;
94
+ : TableFindFirstMethod<TName> extends (args?: unknown) => infer TResult
95
+ ? TResult
96
+ : Promise<TableModel<TName> | null>;
35
97
  type TableModel<TName extends TableName> = InferSelectModel<
36
98
  (typeof mergedSchema)[TName]
37
99
  >;
@@ -176,22 +238,16 @@ type QueryWithInput<TWith> = TWith extends Record<string, unknown>
176
238
 
177
239
  export type QueryFindManyArgs<TName extends TableName> = Omit<
178
240
  NonNullable<TableFindManyArgs<TName>>,
179
- "where" | "with"
241
+ "where"
180
242
  > & {
181
243
  where?: WhereInput<TableModel<TName>>;
182
- with?: TableFindManyArgs<TName> extends { with?: infer TWith }
183
- ? QueryWithInput<TWith>
184
- : never;
185
244
  };
186
245
 
187
246
  export type QueryFindFirstArgs<TName extends TableName> = Omit<
188
247
  NonNullable<TableFindFirstArgs<TName>>,
189
- "where" | "with"
248
+ "where"
190
249
  > & {
191
250
  where?: WhereInput<TableModel<TName>>;
192
- with?: TableFindFirstArgs<TName> extends { with?: infer TWith }
193
- ? QueryWithInput<TWith>
194
- : never;
195
251
  };
196
252
 
197
253
  export type QueryInsertArgs<TName extends TableName> = {
@@ -303,20 +359,20 @@ export type QueryUpsertArgs<TName extends TableName> = {
303
359
  };
304
360
 
305
361
  export type QueryTableApi<TName extends TableName> = {
306
- findMany: <
362
+ findMany: TableFindManyMethod<TName> & (<
307
363
  TArgs extends QueryFindManyArgs<TName> | undefined =
308
364
  | QueryFindManyArgs<TName>
309
365
  | undefined,
310
366
  >(
311
367
  args?: TArgs,
312
- ) => ApplyFindManyWithAggregateResult<TableFindManyResult<TName>, TArgs>;
313
- findFirst: <
368
+ ) => ApplyFindManyWithAggregateResult<TableFindManyResult<TName, TArgs>, TArgs>);
369
+ findFirst: TableFindFirstMethod<TName> & (<
314
370
  TArgs extends QueryFindFirstArgs<TName> | undefined =
315
371
  | QueryFindFirstArgs<TName>
316
372
  | undefined,
317
373
  >(
318
374
  args?: TArgs,
319
- ) => ApplyFindFirstWithAggregateResult<TableFindFirstResult<TName>, TArgs>;
375
+ ) => ApplyFindFirstWithAggregateResult<TableFindFirstResult<TName, TArgs>, TArgs>);
320
376
  insert: (args: QueryInsertArgs<TName>) => Promise<Array<TableModel<TName>>>;
321
377
  update: (args: QueryUpdateArgs<TName>) => Promise<Array<TableModel<TName>>>;
322
378
  upsert: (args: QueryUpsertArgs<TName>) => Promise<Array<TableModel<TName>>>;
@@ -46,6 +46,14 @@ export function generateTypesQueryRuntimeSection(): string {
46
46
  ? (args?.where as Record<string, unknown>)
47
47
  : undefined;
48
48
  const whereFilter = buildWhereFilter(table, where, tableName);
49
+ const passthroughArgs =
50
+ where !== undefined && !whereFilter
51
+ ? (() => {
52
+ const nextArgs = { ...(args ?? {}) };
53
+ delete nextArgs.where;
54
+ return nextArgs;
55
+ })()
56
+ : args;
49
57
  const withValue = args?.with;
50
58
  const transformedWithResult =
51
59
  withValue === undefined
@@ -57,11 +65,11 @@ export function generateTypesQueryRuntimeSection(): string {
57
65
  const transformedWith = transformedWithResult.with;
58
66
  const aggregatePlan = transformedWithResult.aggregatePlan;
59
67
  if (!whereFilter && transformedWith === withValue && !aggregatePlan) {
60
- return queryTable.findMany(args);
68
+ return queryTable.findMany(passthroughArgs);
61
69
  }
62
70
 
63
71
  const queryPromise = queryTable.findMany({
64
- ...(args ?? {}),
72
+ ...(passthroughArgs ?? {}),
65
73
  ...(whereFilter ? { where: () => whereFilter } : {}),
66
74
  ...(transformedWith !== undefined ? { with: transformedWith } : {}),
67
75
  });
@@ -79,6 +87,14 @@ export function generateTypesQueryRuntimeSection(): string {
79
87
  ? (args?.where as Record<string, unknown>)
80
88
  : undefined;
81
89
  const whereFilter = buildWhereFilter(table, where, tableName);
90
+ const passthroughArgs =
91
+ where !== undefined && !whereFilter
92
+ ? (() => {
93
+ const nextArgs = { ...(args ?? {}) };
94
+ delete nextArgs.where;
95
+ return nextArgs;
96
+ })()
97
+ : args;
82
98
  const withValue = args?.with;
83
99
  const transformedWithResult =
84
100
  withValue === undefined
@@ -90,11 +106,11 @@ export function generateTypesQueryRuntimeSection(): string {
90
106
  const transformedWith = transformedWithResult.with;
91
107
  const aggregatePlan = transformedWithResult.aggregatePlan;
92
108
  if (!whereFilter && transformedWith === withValue && !aggregatePlan) {
93
- return queryTable.findFirst(args);
109
+ return queryTable.findFirst(passthroughArgs);
94
110
  }
95
111
 
96
112
  const queryPromise = queryTable.findFirst({
97
- ...(args ?? {}),
113
+ ...(passthroughArgs ?? {}),
98
114
  ...(whereFilter ? { where: () => whereFilter } : {}),
99
115
  ...(transformedWith !== undefined ? { with: transformedWith } : {}),
100
116
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "appflare",
3
- "version": "0.1.12",
3
+ "version": "0.2.0",
4
4
  "bin": {
5
5
  "appflare": "./cli/index.ts"
6
6
  },