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
- export type MergeAllFetchTypes<Signals extends readonly FetchSignalInput[]> = [Signals[number]] extends [never]
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
- : UnionToIntersection<FetchTypeOfSignal<Signals[number]>>;
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "akanjs",
3
- "version": "2.3.2-rc.3",
3
+ "version": "2.3.2-rc.4",
4
4
  "sourceType": "module",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -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
- export type MergeAllFetchTypes<Signals extends readonly FetchSignalInput[]> = [Signals[number]] extends [never] ? unknown : UnionToIntersection<FetchTypeOfSignal<Signals[number]>>;
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 {};