@forklaunch/core 0.13.6 → 0.13.8
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/lib/http/index.d.mts +80 -14
- package/lib/http/index.d.ts +80 -14
- package/package.json +3 -3
package/lib/http/index.d.mts
CHANGED
@@ -969,7 +969,7 @@ type LiveTypeFunction<SV extends AnySchemaValidator, Route extends string, P ext
|
|
969
969
|
query: unknown;
|
970
970
|
} | {
|
971
971
|
headers: unknown;
|
972
|
-
} ? [reqInit: ReqInit] : [reqInit?: ReqInit] : never) => Promise<Prettify<SdkResponse<SV, ResponsesObject<SV> extends ResBodyMap ? Record<number, unknown> : ResBodyMap, ForklaunchResHeaders extends ResHeaders ? unknown : MapSchema<SV, ResHeaders>>>> : {
|
972
|
+
} ? [reqInit: Prettify<ReqInit>] : [reqInit?: Prettify<ReqInit>] : never) => Promise<Prettify<SdkResponse<SV, ResponsesObject<SV> extends ResBodyMap ? Record<number, unknown> : ResBodyMap, ForklaunchResHeaders extends ResHeaders ? unknown : MapSchema<SV, ResHeaders>>>> : {
|
973
973
|
[K in keyof VersionedApi]: (...reqInit: Prettify<Omit<RequestInit, 'method' | 'body' | 'query' | 'headers' | 'params'> & LiveTypeFunctionRequestInit<SV, P, VersionedApi[K]['body'] extends Body<SV> ? VersionedApi[K]['body'] : Body<SV>, VersionedApi[K]['query'] extends QueryObject<SV> ? VersionedApi[K]['query'] : QueryObject<SV>, VersionedApi[K]['requestHeaders'] extends HeadersObject<SV> ? VersionedApi[K]['requestHeaders'] : HeadersObject<SV>, Auth>> & {
|
974
974
|
version: K;
|
975
975
|
} extends infer ReqInit ? ReqInit extends {
|
@@ -980,7 +980,7 @@ type LiveTypeFunction<SV extends AnySchemaValidator, Route extends string, P ext
|
|
980
980
|
query: unknown;
|
981
981
|
} | {
|
982
982
|
headers: unknown;
|
983
|
-
} ? [reqInit: ReqInit] : [reqInit?: ReqInit] : never) => Promise<Prettify<SdkResponse<SV, ResponsesObject<SV> extends VersionedApi[K]['responses'] ? Record<number, unknown> : VersionedApi[K]['responses'], ForklaunchResHeaders extends VersionedApi[K]['responseHeaders'] ? unknown : MapSchema<SV, VersionedApi[K]['responseHeaders']>>>>;
|
983
|
+
} ? [reqInit: Prettify<ReqInit>] : [reqInit?: Prettify<ReqInit>] : never) => Promise<Prettify<SdkResponse<SV, ResponsesObject<SV> extends VersionedApi[K]['responses'] ? Record<number, unknown> : VersionedApi[K]['responses'], ForklaunchResHeaders extends VersionedApi[K]['responseHeaders'] ? unknown : MapSchema<SV, VersionedApi[K]['responseHeaders']>>>>;
|
984
984
|
};
|
985
985
|
/**
|
986
986
|
* Represents a live type function for the SDK.
|
@@ -1002,7 +1002,7 @@ type LiveSdkFunction<SV extends AnySchemaValidator, P extends ParamsObject<SV>,
|
|
1002
1002
|
query: unknown;
|
1003
1003
|
} | {
|
1004
1004
|
headers: unknown;
|
1005
|
-
} ? [reqInit: ReqInit] : [reqInit?: ReqInit] : never) => Promise<Prettify<SdkResponse<SV, ResponsesObject<SV> extends ResBodyMap ? Record<number, unknown> : ResBodyMap, ForklaunchResHeaders extends ResHeaders ? unknown : MapSchema<SV, ResHeaders>>>> : {
|
1005
|
+
} ? [reqInit: Prettify<ReqInit>] : [reqInit?: Prettify<ReqInit>] : never) => Promise<Prettify<SdkResponse<SV, ResponsesObject<SV> extends ResBodyMap ? Record<number, unknown> : ResBodyMap, ForklaunchResHeaders extends ResHeaders ? unknown : MapSchema<SV, ResHeaders>>>> : {
|
1006
1006
|
[K in keyof VersionedApi]: (...reqInit: Prettify<Omit<RequestInit, 'method' | 'body' | 'query' | 'headers' | 'params'> & LiveTypeFunctionRequestInit<SV, P, VersionedApi[K]['body'] extends Body<SV> ? VersionedApi[K]['body'] : Body<SV>, VersionedApi[K]['query'] extends QueryObject<SV> ? VersionedApi[K]['query'] : QueryObject<SV>, VersionedApi[K]['requestHeaders'] extends HeadersObject<SV> ? VersionedApi[K]['requestHeaders'] : HeadersObject<SV>, Auth>> extends infer ReqInit ? ReqInit extends {
|
1007
1007
|
body: unknown;
|
1008
1008
|
} | {
|
@@ -1011,7 +1011,7 @@ type LiveSdkFunction<SV extends AnySchemaValidator, P extends ParamsObject<SV>,
|
|
1011
1011
|
query: unknown;
|
1012
1012
|
} | {
|
1013
1013
|
headers: unknown;
|
1014
|
-
} ? [reqInit: ReqInit] : [reqInit?: ReqInit] : never) => Promise<Prettify<SdkResponse<SV, ResponsesObject<SV> extends VersionedApi[K]['responses'] ? Record<number, unknown> : VersionedApi[K]['responses'], ForklaunchResHeaders extends VersionedApi[K]['responseHeaders'] ? unknown : MapSchema<SV, VersionedApi[K]['responseHeaders']>>>>;
|
1014
|
+
} ? [reqInit: Prettify<ReqInit>] : [reqInit?: Prettify<ReqInit>] : never) => Promise<Prettify<SdkResponse<SV, ResponsesObject<SV> extends VersionedApi[K]['responses'] ? Record<number, unknown> : VersionedApi[K]['responses'], ForklaunchResHeaders extends VersionedApi[K]['responseHeaders'] ? unknown : MapSchema<SV, VersionedApi[K]['responseHeaders']>>>>;
|
1015
1015
|
};
|
1016
1016
|
/**
|
1017
1017
|
* Represents a basic SDK Response object.
|
@@ -1364,11 +1364,11 @@ type RouterMap<SV extends AnySchemaValidator> = {
|
|
1364
1364
|
* // Results in: { api: { users: { getUser: () => Promise<{}> }, posts: { getPosts: () => Promise<[]> } } }
|
1365
1365
|
* ```
|
1366
1366
|
*/
|
1367
|
-
type MapToSdk<SV extends AnySchemaValidator, T extends RouterMap<SV>, Acc extends Record<string, unknown> = Record<string, never>> = {
|
1367
|
+
type MapToSdk<SV extends AnySchemaValidator, T extends RouterMap<SV>, Acc extends Record<string, unknown> = Record<string, never>> = Prettify<{
|
1368
1368
|
[K in keyof T]: T[K] extends {
|
1369
|
-
sdk:
|
1370
|
-
} ?
|
1371
|
-
}
|
1369
|
+
sdk: unknown;
|
1370
|
+
} ? T[K]['sdk'] : T[K] extends RouterMap<SV> ? MapToSdk<SV, T[K], Acc> : never;
|
1371
|
+
}>;
|
1372
1372
|
/**
|
1373
1373
|
* Tail-recursive type that extracts and flattens fetch map interfaces from a RouterMap structure.
|
1374
1374
|
* This version uses an accumulator pattern to avoid deep recursion and improve performance.
|
@@ -1393,8 +1393,8 @@ type MapToSdk<SV extends AnySchemaValidator, T extends RouterMap<SV>, Acc extend
|
|
1393
1393
|
*/
|
1394
1394
|
type MapToFetch<SV extends AnySchemaValidator, T extends RouterMap<SV>> = UnionToIntersection<Prettify<{
|
1395
1395
|
[K in keyof T]: T[K] extends RouterMap<SV> ? MapToFetch<SV, T[K]> : T[K] extends {
|
1396
|
-
_fetchMap:
|
1397
|
-
} ?
|
1396
|
+
_fetchMap: unknown;
|
1397
|
+
} ? T[K]['_fetchMap'] extends Record<string, unknown> ? T[K]['_fetchMap'] : never : never;
|
1398
1398
|
}[keyof T]>>;
|
1399
1399
|
type CollectionOptimized<T> = T extends infer U ? U : never;
|
1400
1400
|
/**
|
@@ -1486,14 +1486,14 @@ type ExtractLiveTypeFn<Entry extends SdkHandler, SV extends AnySchemaValidator,
|
|
1486
1486
|
* // Results in properly typed fetch map with discriminated methods per path
|
1487
1487
|
* ```
|
1488
1488
|
*/
|
1489
|
-
type ToFetchMap<T extends Record<string, SdkHandler>, SV extends AnySchemaValidator, RouterBasePath extends `/${string}`> = {
|
1489
|
+
type ToFetchMap<T extends Record<string, SdkHandler>, SV extends AnySchemaValidator, RouterBasePath extends `/${string}`> = Prettify<{
|
1490
1490
|
[K in keyof T as T[K]['_path'] extends infer P | undefined ? P extends `/${string}` ? `${RouterBasePath}${P}` : never : never]: {
|
1491
1491
|
[M in T[K]['_method'] as M extends Method ? Uppercase<M> : never]: ExtractLiveTypeFn<Extract<T[K], {
|
1492
1492
|
_path: T[K]['_path'];
|
1493
1493
|
_method: M;
|
1494
1494
|
}>, SV, RouterBasePath>;
|
1495
1495
|
};
|
1496
|
-
}
|
1496
|
+
}>;
|
1497
1497
|
|
1498
1498
|
/**
|
1499
1499
|
* A class that represents an Express-like router.
|
@@ -2053,8 +2053,74 @@ declare function sdkRouter<SV extends AnySchemaValidator, const T extends Record
|
|
2053
2053
|
sdkPaths: Record<string, string>;
|
2054
2054
|
}>(schemaValidator: SV, controller: T, router: Router): {
|
2055
2055
|
sdk: MapControllerToSdk<SV, T>;
|
2056
|
-
fetch: FetchFunction<
|
2057
|
-
|
2056
|
+
fetch: FetchFunction<{ [K_1 in keyof T as T[K_1]["_path"] extends infer P | undefined ? P extends `/${string}` ? `${Router["basePath"] extends `/${string}` ? Router["basePath"] : "/"}${P}` : never : never]: { [M in T[K_1]["_method"] as M extends Method ? Uppercase<M> : never]: LiveTypeFunction<SV, Extract<T[K_1], {
|
2057
|
+
_path: T[K_1]["_path"];
|
2058
|
+
_method: M;
|
2059
|
+
}>["_path"] extends infer Path | undefined ? Path extends `/${string}` ? `${Router["basePath"] extends `/${string}` ? Router["basePath"] : "/"}${Path}` : never : never, Extract<T[K_1], {
|
2060
|
+
_path: T[K_1]["_path"];
|
2061
|
+
_method: M;
|
2062
|
+
}>["contractDetails"]["params"] extends infer Params | undefined ? Params extends ParamsObject<SV> ? Params : ParamsObject<SV> : ParamsObject<SV>, Extract<T[K_1], {
|
2063
|
+
_path: T[K_1]["_path"];
|
2064
|
+
_method: M;
|
2065
|
+
}>["contractDetails"]["responses"] extends infer Responses | undefined ? Responses extends ResponsesObject<SV> ? Responses : ResponsesObject<SV> : ResponsesObject<SV>, Extract<T[K_1], {
|
2066
|
+
_path: T[K_1]["_path"];
|
2067
|
+
_method: M;
|
2068
|
+
}>["contractDetails"]["body"] extends infer B | undefined ? B extends Body<SV> ? B : Body<SV> : Body<SV>, Extract<T[K_1], {
|
2069
|
+
_path: T[K_1]["_path"];
|
2070
|
+
_method: M;
|
2071
|
+
}>["contractDetails"]["query"] extends infer Q | undefined ? Q extends QueryObject<SV> ? Q : QueryObject<SV> : QueryObject<SV>, Extract<T[K_1], {
|
2072
|
+
_path: T[K_1]["_path"];
|
2073
|
+
_method: M;
|
2074
|
+
}>["contractDetails"]["requestHeaders"] extends infer RequestHeaders | undefined ? RequestHeaders extends HeadersObject<SV> ? RequestHeaders : HeadersObject<SV> : HeadersObject<SV>, Extract<T[K_1], {
|
2075
|
+
_path: T[K_1]["_path"];
|
2076
|
+
_method: M;
|
2077
|
+
}>["contractDetails"]["responseHeaders"] extends infer ResponseHeaders | undefined ? ResponseHeaders extends HeadersObject<SV> ? ResponseHeaders : HeadersObject<SV> : HeadersObject<SV>, Extract<T[K_1], {
|
2078
|
+
_path: T[K_1]["_path"];
|
2079
|
+
_method: M;
|
2080
|
+
}>["_method"] extends Method ? Extract<T[K_1], {
|
2081
|
+
_path: T[K_1]["_path"];
|
2082
|
+
_method: M;
|
2083
|
+
}>["_method"] : never, Extract<T[K_1], {
|
2084
|
+
_path: T[K_1]["_path"];
|
2085
|
+
_method: M;
|
2086
|
+
}>["contractDetails"]["versions"] extends infer Versions | undefined ? Versions extends VersionSchema<SV, Method> ? Versions : VersionSchema<SV, Method> : VersionSchema<SV, Method>, Extract<T[K_1], {
|
2087
|
+
_path: T[K_1]["_path"];
|
2088
|
+
_method: M;
|
2089
|
+
}>["contractDetails"]["auth"] extends infer Auth | undefined ? Auth extends AuthMethodsBase ? Auth : AuthMethodsBase : AuthMethodsBase>; }; } extends infer T_1 ? { [K in keyof T_1]: T_1[K]; } : never>;
|
2090
|
+
_fetchMap: { [K_1 in keyof T as T[K_1]["_path"] extends infer P | undefined ? P extends `/${string}` ? `${Router["basePath"] extends `/${string}` ? Router["basePath"] : "/"}${P}` : never : never]: { [M in T[K_1]["_method"] as M extends Method ? Uppercase<M> : never]: LiveTypeFunction<SV, Extract<T[K_1], {
|
2091
|
+
_path: T[K_1]["_path"];
|
2092
|
+
_method: M;
|
2093
|
+
}>["_path"] extends infer Path | undefined ? Path extends `/${string}` ? `${Router["basePath"] extends `/${string}` ? Router["basePath"] : "/"}${Path}` : never : never, Extract<T[K_1], {
|
2094
|
+
_path: T[K_1]["_path"];
|
2095
|
+
_method: M;
|
2096
|
+
}>["contractDetails"]["params"] extends infer Params | undefined ? Params extends ParamsObject<SV> ? Params : ParamsObject<SV> : ParamsObject<SV>, Extract<T[K_1], {
|
2097
|
+
_path: T[K_1]["_path"];
|
2098
|
+
_method: M;
|
2099
|
+
}>["contractDetails"]["responses"] extends infer Responses | undefined ? Responses extends ResponsesObject<SV> ? Responses : ResponsesObject<SV> : ResponsesObject<SV>, Extract<T[K_1], {
|
2100
|
+
_path: T[K_1]["_path"];
|
2101
|
+
_method: M;
|
2102
|
+
}>["contractDetails"]["body"] extends infer B | undefined ? B extends Body<SV> ? B : Body<SV> : Body<SV>, Extract<T[K_1], {
|
2103
|
+
_path: T[K_1]["_path"];
|
2104
|
+
_method: M;
|
2105
|
+
}>["contractDetails"]["query"] extends infer Q | undefined ? Q extends QueryObject<SV> ? Q : QueryObject<SV> : QueryObject<SV>, Extract<T[K_1], {
|
2106
|
+
_path: T[K_1]["_path"];
|
2107
|
+
_method: M;
|
2108
|
+
}>["contractDetails"]["requestHeaders"] extends infer RequestHeaders | undefined ? RequestHeaders extends HeadersObject<SV> ? RequestHeaders : HeadersObject<SV> : HeadersObject<SV>, Extract<T[K_1], {
|
2109
|
+
_path: T[K_1]["_path"];
|
2110
|
+
_method: M;
|
2111
|
+
}>["contractDetails"]["responseHeaders"] extends infer ResponseHeaders | undefined ? ResponseHeaders extends HeadersObject<SV> ? ResponseHeaders : HeadersObject<SV> : HeadersObject<SV>, Extract<T[K_1], {
|
2112
|
+
_path: T[K_1]["_path"];
|
2113
|
+
_method: M;
|
2114
|
+
}>["_method"] extends Method ? Extract<T[K_1], {
|
2115
|
+
_path: T[K_1]["_path"];
|
2116
|
+
_method: M;
|
2117
|
+
}>["_method"] : never, Extract<T[K_1], {
|
2118
|
+
_path: T[K_1]["_path"];
|
2119
|
+
_method: M;
|
2120
|
+
}>["contractDetails"]["versions"] extends infer Versions | undefined ? Versions extends VersionSchema<SV, Method> ? Versions : VersionSchema<SV, Method> : VersionSchema<SV, Method>, Extract<T[K_1], {
|
2121
|
+
_path: T[K_1]["_path"];
|
2122
|
+
_method: M;
|
2123
|
+
}>["contractDetails"]["auth"] extends infer Auth | undefined ? Auth extends AuthMethodsBase ? Auth : AuthMethodsBase : AuthMethodsBase>; }; } extends infer T_2 ? { [K in keyof T_2]: T_2[K]; } : never;
|
2058
2124
|
sdkPaths: Router["sdkPaths"];
|
2059
2125
|
};
|
2060
2126
|
|
package/lib/http/index.d.ts
CHANGED
@@ -969,7 +969,7 @@ type LiveTypeFunction<SV extends AnySchemaValidator, Route extends string, P ext
|
|
969
969
|
query: unknown;
|
970
970
|
} | {
|
971
971
|
headers: unknown;
|
972
|
-
} ? [reqInit: ReqInit] : [reqInit?: ReqInit] : never) => Promise<Prettify<SdkResponse<SV, ResponsesObject<SV> extends ResBodyMap ? Record<number, unknown> : ResBodyMap, ForklaunchResHeaders extends ResHeaders ? unknown : MapSchema<SV, ResHeaders>>>> : {
|
972
|
+
} ? [reqInit: Prettify<ReqInit>] : [reqInit?: Prettify<ReqInit>] : never) => Promise<Prettify<SdkResponse<SV, ResponsesObject<SV> extends ResBodyMap ? Record<number, unknown> : ResBodyMap, ForklaunchResHeaders extends ResHeaders ? unknown : MapSchema<SV, ResHeaders>>>> : {
|
973
973
|
[K in keyof VersionedApi]: (...reqInit: Prettify<Omit<RequestInit, 'method' | 'body' | 'query' | 'headers' | 'params'> & LiveTypeFunctionRequestInit<SV, P, VersionedApi[K]['body'] extends Body<SV> ? VersionedApi[K]['body'] : Body<SV>, VersionedApi[K]['query'] extends QueryObject<SV> ? VersionedApi[K]['query'] : QueryObject<SV>, VersionedApi[K]['requestHeaders'] extends HeadersObject<SV> ? VersionedApi[K]['requestHeaders'] : HeadersObject<SV>, Auth>> & {
|
974
974
|
version: K;
|
975
975
|
} extends infer ReqInit ? ReqInit extends {
|
@@ -980,7 +980,7 @@ type LiveTypeFunction<SV extends AnySchemaValidator, Route extends string, P ext
|
|
980
980
|
query: unknown;
|
981
981
|
} | {
|
982
982
|
headers: unknown;
|
983
|
-
} ? [reqInit: ReqInit] : [reqInit?: ReqInit] : never) => Promise<Prettify<SdkResponse<SV, ResponsesObject<SV> extends VersionedApi[K]['responses'] ? Record<number, unknown> : VersionedApi[K]['responses'], ForklaunchResHeaders extends VersionedApi[K]['responseHeaders'] ? unknown : MapSchema<SV, VersionedApi[K]['responseHeaders']>>>>;
|
983
|
+
} ? [reqInit: Prettify<ReqInit>] : [reqInit?: Prettify<ReqInit>] : never) => Promise<Prettify<SdkResponse<SV, ResponsesObject<SV> extends VersionedApi[K]['responses'] ? Record<number, unknown> : VersionedApi[K]['responses'], ForklaunchResHeaders extends VersionedApi[K]['responseHeaders'] ? unknown : MapSchema<SV, VersionedApi[K]['responseHeaders']>>>>;
|
984
984
|
};
|
985
985
|
/**
|
986
986
|
* Represents a live type function for the SDK.
|
@@ -1002,7 +1002,7 @@ type LiveSdkFunction<SV extends AnySchemaValidator, P extends ParamsObject<SV>,
|
|
1002
1002
|
query: unknown;
|
1003
1003
|
} | {
|
1004
1004
|
headers: unknown;
|
1005
|
-
} ? [reqInit: ReqInit] : [reqInit?: ReqInit] : never) => Promise<Prettify<SdkResponse<SV, ResponsesObject<SV> extends ResBodyMap ? Record<number, unknown> : ResBodyMap, ForklaunchResHeaders extends ResHeaders ? unknown : MapSchema<SV, ResHeaders>>>> : {
|
1005
|
+
} ? [reqInit: Prettify<ReqInit>] : [reqInit?: Prettify<ReqInit>] : never) => Promise<Prettify<SdkResponse<SV, ResponsesObject<SV> extends ResBodyMap ? Record<number, unknown> : ResBodyMap, ForklaunchResHeaders extends ResHeaders ? unknown : MapSchema<SV, ResHeaders>>>> : {
|
1006
1006
|
[K in keyof VersionedApi]: (...reqInit: Prettify<Omit<RequestInit, 'method' | 'body' | 'query' | 'headers' | 'params'> & LiveTypeFunctionRequestInit<SV, P, VersionedApi[K]['body'] extends Body<SV> ? VersionedApi[K]['body'] : Body<SV>, VersionedApi[K]['query'] extends QueryObject<SV> ? VersionedApi[K]['query'] : QueryObject<SV>, VersionedApi[K]['requestHeaders'] extends HeadersObject<SV> ? VersionedApi[K]['requestHeaders'] : HeadersObject<SV>, Auth>> extends infer ReqInit ? ReqInit extends {
|
1007
1007
|
body: unknown;
|
1008
1008
|
} | {
|
@@ -1011,7 +1011,7 @@ type LiveSdkFunction<SV extends AnySchemaValidator, P extends ParamsObject<SV>,
|
|
1011
1011
|
query: unknown;
|
1012
1012
|
} | {
|
1013
1013
|
headers: unknown;
|
1014
|
-
} ? [reqInit: ReqInit] : [reqInit?: ReqInit] : never) => Promise<Prettify<SdkResponse<SV, ResponsesObject<SV> extends VersionedApi[K]['responses'] ? Record<number, unknown> : VersionedApi[K]['responses'], ForklaunchResHeaders extends VersionedApi[K]['responseHeaders'] ? unknown : MapSchema<SV, VersionedApi[K]['responseHeaders']>>>>;
|
1014
|
+
} ? [reqInit: Prettify<ReqInit>] : [reqInit?: Prettify<ReqInit>] : never) => Promise<Prettify<SdkResponse<SV, ResponsesObject<SV> extends VersionedApi[K]['responses'] ? Record<number, unknown> : VersionedApi[K]['responses'], ForklaunchResHeaders extends VersionedApi[K]['responseHeaders'] ? unknown : MapSchema<SV, VersionedApi[K]['responseHeaders']>>>>;
|
1015
1015
|
};
|
1016
1016
|
/**
|
1017
1017
|
* Represents a basic SDK Response object.
|
@@ -1364,11 +1364,11 @@ type RouterMap<SV extends AnySchemaValidator> = {
|
|
1364
1364
|
* // Results in: { api: { users: { getUser: () => Promise<{}> }, posts: { getPosts: () => Promise<[]> } } }
|
1365
1365
|
* ```
|
1366
1366
|
*/
|
1367
|
-
type MapToSdk<SV extends AnySchemaValidator, T extends RouterMap<SV>, Acc extends Record<string, unknown> = Record<string, never>> = {
|
1367
|
+
type MapToSdk<SV extends AnySchemaValidator, T extends RouterMap<SV>, Acc extends Record<string, unknown> = Record<string, never>> = Prettify<{
|
1368
1368
|
[K in keyof T]: T[K] extends {
|
1369
|
-
sdk:
|
1370
|
-
} ?
|
1371
|
-
}
|
1369
|
+
sdk: unknown;
|
1370
|
+
} ? T[K]['sdk'] : T[K] extends RouterMap<SV> ? MapToSdk<SV, T[K], Acc> : never;
|
1371
|
+
}>;
|
1372
1372
|
/**
|
1373
1373
|
* Tail-recursive type that extracts and flattens fetch map interfaces from a RouterMap structure.
|
1374
1374
|
* This version uses an accumulator pattern to avoid deep recursion and improve performance.
|
@@ -1393,8 +1393,8 @@ type MapToSdk<SV extends AnySchemaValidator, T extends RouterMap<SV>, Acc extend
|
|
1393
1393
|
*/
|
1394
1394
|
type MapToFetch<SV extends AnySchemaValidator, T extends RouterMap<SV>> = UnionToIntersection<Prettify<{
|
1395
1395
|
[K in keyof T]: T[K] extends RouterMap<SV> ? MapToFetch<SV, T[K]> : T[K] extends {
|
1396
|
-
_fetchMap:
|
1397
|
-
} ?
|
1396
|
+
_fetchMap: unknown;
|
1397
|
+
} ? T[K]['_fetchMap'] extends Record<string, unknown> ? T[K]['_fetchMap'] : never : never;
|
1398
1398
|
}[keyof T]>>;
|
1399
1399
|
type CollectionOptimized<T> = T extends infer U ? U : never;
|
1400
1400
|
/**
|
@@ -1486,14 +1486,14 @@ type ExtractLiveTypeFn<Entry extends SdkHandler, SV extends AnySchemaValidator,
|
|
1486
1486
|
* // Results in properly typed fetch map with discriminated methods per path
|
1487
1487
|
* ```
|
1488
1488
|
*/
|
1489
|
-
type ToFetchMap<T extends Record<string, SdkHandler>, SV extends AnySchemaValidator, RouterBasePath extends `/${string}`> = {
|
1489
|
+
type ToFetchMap<T extends Record<string, SdkHandler>, SV extends AnySchemaValidator, RouterBasePath extends `/${string}`> = Prettify<{
|
1490
1490
|
[K in keyof T as T[K]['_path'] extends infer P | undefined ? P extends `/${string}` ? `${RouterBasePath}${P}` : never : never]: {
|
1491
1491
|
[M in T[K]['_method'] as M extends Method ? Uppercase<M> : never]: ExtractLiveTypeFn<Extract<T[K], {
|
1492
1492
|
_path: T[K]['_path'];
|
1493
1493
|
_method: M;
|
1494
1494
|
}>, SV, RouterBasePath>;
|
1495
1495
|
};
|
1496
|
-
}
|
1496
|
+
}>;
|
1497
1497
|
|
1498
1498
|
/**
|
1499
1499
|
* A class that represents an Express-like router.
|
@@ -2053,8 +2053,74 @@ declare function sdkRouter<SV extends AnySchemaValidator, const T extends Record
|
|
2053
2053
|
sdkPaths: Record<string, string>;
|
2054
2054
|
}>(schemaValidator: SV, controller: T, router: Router): {
|
2055
2055
|
sdk: MapControllerToSdk<SV, T>;
|
2056
|
-
fetch: FetchFunction<
|
2057
|
-
|
2056
|
+
fetch: FetchFunction<{ [K_1 in keyof T as T[K_1]["_path"] extends infer P | undefined ? P extends `/${string}` ? `${Router["basePath"] extends `/${string}` ? Router["basePath"] : "/"}${P}` : never : never]: { [M in T[K_1]["_method"] as M extends Method ? Uppercase<M> : never]: LiveTypeFunction<SV, Extract<T[K_1], {
|
2057
|
+
_path: T[K_1]["_path"];
|
2058
|
+
_method: M;
|
2059
|
+
}>["_path"] extends infer Path | undefined ? Path extends `/${string}` ? `${Router["basePath"] extends `/${string}` ? Router["basePath"] : "/"}${Path}` : never : never, Extract<T[K_1], {
|
2060
|
+
_path: T[K_1]["_path"];
|
2061
|
+
_method: M;
|
2062
|
+
}>["contractDetails"]["params"] extends infer Params | undefined ? Params extends ParamsObject<SV> ? Params : ParamsObject<SV> : ParamsObject<SV>, Extract<T[K_1], {
|
2063
|
+
_path: T[K_1]["_path"];
|
2064
|
+
_method: M;
|
2065
|
+
}>["contractDetails"]["responses"] extends infer Responses | undefined ? Responses extends ResponsesObject<SV> ? Responses : ResponsesObject<SV> : ResponsesObject<SV>, Extract<T[K_1], {
|
2066
|
+
_path: T[K_1]["_path"];
|
2067
|
+
_method: M;
|
2068
|
+
}>["contractDetails"]["body"] extends infer B | undefined ? B extends Body<SV> ? B : Body<SV> : Body<SV>, Extract<T[K_1], {
|
2069
|
+
_path: T[K_1]["_path"];
|
2070
|
+
_method: M;
|
2071
|
+
}>["contractDetails"]["query"] extends infer Q | undefined ? Q extends QueryObject<SV> ? Q : QueryObject<SV> : QueryObject<SV>, Extract<T[K_1], {
|
2072
|
+
_path: T[K_1]["_path"];
|
2073
|
+
_method: M;
|
2074
|
+
}>["contractDetails"]["requestHeaders"] extends infer RequestHeaders | undefined ? RequestHeaders extends HeadersObject<SV> ? RequestHeaders : HeadersObject<SV> : HeadersObject<SV>, Extract<T[K_1], {
|
2075
|
+
_path: T[K_1]["_path"];
|
2076
|
+
_method: M;
|
2077
|
+
}>["contractDetails"]["responseHeaders"] extends infer ResponseHeaders | undefined ? ResponseHeaders extends HeadersObject<SV> ? ResponseHeaders : HeadersObject<SV> : HeadersObject<SV>, Extract<T[K_1], {
|
2078
|
+
_path: T[K_1]["_path"];
|
2079
|
+
_method: M;
|
2080
|
+
}>["_method"] extends Method ? Extract<T[K_1], {
|
2081
|
+
_path: T[K_1]["_path"];
|
2082
|
+
_method: M;
|
2083
|
+
}>["_method"] : never, Extract<T[K_1], {
|
2084
|
+
_path: T[K_1]["_path"];
|
2085
|
+
_method: M;
|
2086
|
+
}>["contractDetails"]["versions"] extends infer Versions | undefined ? Versions extends VersionSchema<SV, Method> ? Versions : VersionSchema<SV, Method> : VersionSchema<SV, Method>, Extract<T[K_1], {
|
2087
|
+
_path: T[K_1]["_path"];
|
2088
|
+
_method: M;
|
2089
|
+
}>["contractDetails"]["auth"] extends infer Auth | undefined ? Auth extends AuthMethodsBase ? Auth : AuthMethodsBase : AuthMethodsBase>; }; } extends infer T_1 ? { [K in keyof T_1]: T_1[K]; } : never>;
|
2090
|
+
_fetchMap: { [K_1 in keyof T as T[K_1]["_path"] extends infer P | undefined ? P extends `/${string}` ? `${Router["basePath"] extends `/${string}` ? Router["basePath"] : "/"}${P}` : never : never]: { [M in T[K_1]["_method"] as M extends Method ? Uppercase<M> : never]: LiveTypeFunction<SV, Extract<T[K_1], {
|
2091
|
+
_path: T[K_1]["_path"];
|
2092
|
+
_method: M;
|
2093
|
+
}>["_path"] extends infer Path | undefined ? Path extends `/${string}` ? `${Router["basePath"] extends `/${string}` ? Router["basePath"] : "/"}${Path}` : never : never, Extract<T[K_1], {
|
2094
|
+
_path: T[K_1]["_path"];
|
2095
|
+
_method: M;
|
2096
|
+
}>["contractDetails"]["params"] extends infer Params | undefined ? Params extends ParamsObject<SV> ? Params : ParamsObject<SV> : ParamsObject<SV>, Extract<T[K_1], {
|
2097
|
+
_path: T[K_1]["_path"];
|
2098
|
+
_method: M;
|
2099
|
+
}>["contractDetails"]["responses"] extends infer Responses | undefined ? Responses extends ResponsesObject<SV> ? Responses : ResponsesObject<SV> : ResponsesObject<SV>, Extract<T[K_1], {
|
2100
|
+
_path: T[K_1]["_path"];
|
2101
|
+
_method: M;
|
2102
|
+
}>["contractDetails"]["body"] extends infer B | undefined ? B extends Body<SV> ? B : Body<SV> : Body<SV>, Extract<T[K_1], {
|
2103
|
+
_path: T[K_1]["_path"];
|
2104
|
+
_method: M;
|
2105
|
+
}>["contractDetails"]["query"] extends infer Q | undefined ? Q extends QueryObject<SV> ? Q : QueryObject<SV> : QueryObject<SV>, Extract<T[K_1], {
|
2106
|
+
_path: T[K_1]["_path"];
|
2107
|
+
_method: M;
|
2108
|
+
}>["contractDetails"]["requestHeaders"] extends infer RequestHeaders | undefined ? RequestHeaders extends HeadersObject<SV> ? RequestHeaders : HeadersObject<SV> : HeadersObject<SV>, Extract<T[K_1], {
|
2109
|
+
_path: T[K_1]["_path"];
|
2110
|
+
_method: M;
|
2111
|
+
}>["contractDetails"]["responseHeaders"] extends infer ResponseHeaders | undefined ? ResponseHeaders extends HeadersObject<SV> ? ResponseHeaders : HeadersObject<SV> : HeadersObject<SV>, Extract<T[K_1], {
|
2112
|
+
_path: T[K_1]["_path"];
|
2113
|
+
_method: M;
|
2114
|
+
}>["_method"] extends Method ? Extract<T[K_1], {
|
2115
|
+
_path: T[K_1]["_path"];
|
2116
|
+
_method: M;
|
2117
|
+
}>["_method"] : never, Extract<T[K_1], {
|
2118
|
+
_path: T[K_1]["_path"];
|
2119
|
+
_method: M;
|
2120
|
+
}>["contractDetails"]["versions"] extends infer Versions | undefined ? Versions extends VersionSchema<SV, Method> ? Versions : VersionSchema<SV, Method> : VersionSchema<SV, Method>, Extract<T[K_1], {
|
2121
|
+
_path: T[K_1]["_path"];
|
2122
|
+
_method: M;
|
2123
|
+
}>["contractDetails"]["auth"] extends infer Auth | undefined ? Auth extends AuthMethodsBase ? Auth : AuthMethodsBase : AuthMethodsBase>; }; } extends infer T_2 ? { [K in keyof T_2]: T_2[K]; } : never;
|
2058
2124
|
sdkPaths: Router["sdkPaths"];
|
2059
2125
|
};
|
2060
2126
|
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@forklaunch/core",
|
3
|
-
"version": "0.13.
|
3
|
+
"version": "0.13.8",
|
4
4
|
"description": "forklaunch-js core package. Contains useful building blocks.",
|
5
5
|
"homepage": "https://github.com/forklaunch/forklaunch-js#readme",
|
6
6
|
"bugs": {
|
@@ -91,8 +91,8 @@
|
|
91
91
|
"pino-pretty": "^13.1.1",
|
92
92
|
"redis": "^5.8.2",
|
93
93
|
"uuid": "^11.1.0",
|
94
|
-
"@forklaunch/
|
95
|
-
"@forklaunch/
|
94
|
+
"@forklaunch/validator": "0.9.8",
|
95
|
+
"@forklaunch/common": "0.5.7"
|
96
96
|
},
|
97
97
|
"devDependencies": {
|
98
98
|
"@eslint/js": "^9.34.0",
|