1 | import type { Jsonify } from "type-fest";
|
2 | import type { AppData } from "./data";
|
3 | import type { TypedDeferredData, TypedResponse } from "./responses";
|
4 | type Fn = (...args: any[]) => any;
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 | export type SerializeFrom<T extends AppData | Fn> = T extends (...args: any[]) => infer Output ? Awaited<Output> extends TypedResponse<infer U> ? Jsonify<U> : Awaited<Output> extends TypedDeferredData<infer U> ? {
|
12 | [K in keyof U as K extends symbol ? never : Promise<any> extends U[K] ? K : never]: DeferValue<U[K]>;
|
13 | } & Jsonify<{
|
14 | [K in keyof U as Promise<any> extends U[K] ? never : K]: U[K];
|
15 | }> : Jsonify<Awaited<Output>> : Jsonify<Awaited<T>>;
|
16 | type DeferValue<T> = T extends undefined ? undefined : T extends Promise<unknown> ? Promise<Jsonify<Awaited<T>>> : Jsonify<T>;
|
17 | export {};
|