akanjs 2.3.2-rc.3 → 2.3.2-rc.4
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.
|
@@ -6,12 +6,6 @@ import type { GetFetchTypeFromSlice } from "./sliceFetch.type";
|
|
|
6
6
|
|
|
7
7
|
export type FetchSignalInput = FetchProxy | DatabaseSignal | ServiceSignal;
|
|
8
8
|
|
|
9
|
-
type UnionToIntersection<Union> = (Union extends unknown ? (value: Union) => void : never) extends (
|
|
10
|
-
value: infer Intersection,
|
|
11
|
-
) => void
|
|
12
|
-
? Intersection
|
|
13
|
-
: never;
|
|
14
|
-
|
|
15
9
|
export type FetchTypeOfSignal<Signal extends FetchSignalInput> =
|
|
16
10
|
Signal extends FetchProxy<infer FetchType>
|
|
17
11
|
? FetchType
|
|
@@ -21,9 +15,26 @@ export type FetchTypeOfSignal<Signal extends FetchSignalInput> =
|
|
|
21
15
|
? GetFetchTypeFromEndpoint<EndpCls>
|
|
22
16
|
: unknown;
|
|
23
17
|
|
|
24
|
-
|
|
18
|
+
type FetchKeysOfSignal<Signal> = Signal extends FetchSignalInput ? keyof FetchTypeOfSignal<Signal> : never;
|
|
19
|
+
type FetchKeysOfSignals<Signals extends readonly FetchSignalInput[]> = FetchKeysOfSignal<Signals[number]>;
|
|
20
|
+
|
|
21
|
+
type LastFetchValue<
|
|
22
|
+
Signals extends readonly FetchSignalInput[],
|
|
23
|
+
Key extends PropertyKey,
|
|
24
|
+
Current = never,
|
|
25
|
+
> = Signals extends readonly [infer First extends FetchSignalInput, ...infer Rest extends readonly FetchSignalInput[]]
|
|
26
|
+
? Key extends keyof FetchTypeOfSignal<First>
|
|
27
|
+
? LastFetchValue<Rest, Key, FetchTypeOfSignal<First>[Key]>
|
|
28
|
+
: LastFetchValue<Rest, Key, Current>
|
|
29
|
+
: Current;
|
|
30
|
+
|
|
31
|
+
export type MergeAllFetchTypes<Signals extends readonly FetchSignalInput[]> = [FetchKeysOfSignals<Signals>] extends [
|
|
32
|
+
never,
|
|
33
|
+
]
|
|
25
34
|
? unknown
|
|
26
|
-
:
|
|
35
|
+
: {
|
|
36
|
+
[Key in FetchKeysOfSignals<Signals>]: LastFetchValue<Signals, Key>;
|
|
37
|
+
};
|
|
27
38
|
|
|
28
39
|
export type FetchClientType<Signals extends readonly FetchSignalInput[]> = FetchProxy<
|
|
29
40
|
MergeAllFetchTypes<Signals>,
|
package/package.json
CHANGED
|
@@ -4,13 +4,19 @@ import type { GetSliceMetaObjFromDatabaseSignals } from "../types.d.ts";
|
|
|
4
4
|
import type { GetFetchTypeFromEndpoint } from "./endpointFetch.type";
|
|
5
5
|
import type { GetFetchTypeFromSlice } from "./sliceFetch.type";
|
|
6
6
|
export type FetchSignalInput = FetchProxy | DatabaseSignal | ServiceSignal;
|
|
7
|
-
type UnionToIntersection<Union> = (Union extends unknown ? (value: Union) => void : never) extends (value: infer Intersection) => void ? Intersection : never;
|
|
8
7
|
export type FetchTypeOfSignal<Signal extends FetchSignalInput> = Signal extends FetchProxy<infer FetchType> ? FetchType : Signal extends {
|
|
9
8
|
endpoint: infer EndpCls extends EndpointCls;
|
|
10
9
|
slice: infer SlceCls extends SliceCls;
|
|
11
10
|
} ? GetFetchTypeFromEndpoint<EndpCls> & GetFetchTypeFromSlice<SlceCls> : Signal extends {
|
|
12
11
|
endpoint: infer EndpCls extends EndpointCls;
|
|
13
12
|
} ? GetFetchTypeFromEndpoint<EndpCls> : unknown;
|
|
14
|
-
|
|
13
|
+
type FetchKeysOfSignal<Signal> = Signal extends FetchSignalInput ? keyof FetchTypeOfSignal<Signal> : never;
|
|
14
|
+
type FetchKeysOfSignals<Signals extends readonly FetchSignalInput[]> = FetchKeysOfSignal<Signals[number]>;
|
|
15
|
+
type LastFetchValue<Signals extends readonly FetchSignalInput[], Key extends PropertyKey, Current = never> = Signals extends readonly [infer First extends FetchSignalInput, ...infer Rest extends readonly FetchSignalInput[]] ? Key extends keyof FetchTypeOfSignal<First> ? LastFetchValue<Rest, Key, FetchTypeOfSignal<First>[Key]> : LastFetchValue<Rest, Key, Current> : Current;
|
|
16
|
+
export type MergeAllFetchTypes<Signals extends readonly FetchSignalInput[]> = [FetchKeysOfSignals<Signals>] extends [
|
|
17
|
+
never
|
|
18
|
+
] ? unknown : {
|
|
19
|
+
[Key in FetchKeysOfSignals<Signals>]: LastFetchValue<Signals, Key>;
|
|
20
|
+
};
|
|
15
21
|
export type FetchClientType<Signals extends readonly FetchSignalInput[]> = FetchProxy<MergeAllFetchTypes<Signals>, GetSliceMetaObjFromDatabaseSignals<Signals>>;
|
|
16
22
|
export {};
|