akanjs 2.3.2-rc.3 → 2.3.2-rc.5

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,14 @@ 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]
25
- ? unknown
26
- : UnionToIntersection<FetchTypeOfSignal<Signals[number]>>;
18
+ type OverrideFetchType<Current, Next> = Omit<Current, keyof Next> & Next;
19
+
20
+ export type MergeAllFetchTypes<Signals extends readonly FetchSignalInput[]> = Signals extends readonly [
21
+ infer First extends FetchSignalInput,
22
+ ...infer Rest extends readonly FetchSignalInput[],
23
+ ]
24
+ ? OverrideFetchType<FetchTypeOfSignal<First>, MergeAllFetchTypes<Rest>>
25
+ : unknown;
27
26
 
28
27
  export type FetchClientType<Signals extends readonly FetchSignalInput[]> = FetchProxy<
29
28
  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.5",
4
4
  "sourceType": "module",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -4,13 +4,16 @@ 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 OverrideFetchType<Current, Next> = Omit<Current, keyof Next> & Next;
14
+ export type MergeAllFetchTypes<Signals extends readonly FetchSignalInput[]> = Signals extends readonly [
15
+ infer First extends FetchSignalInput,
16
+ ...infer Rest extends readonly FetchSignalInput[]
17
+ ] ? OverrideFetchType<FetchTypeOfSignal<First>, MergeAllFetchTypes<Rest>> : unknown;
15
18
  export type FetchClientType<Signals extends readonly FetchSignalInput[]> = FetchProxy<MergeAllFetchTypes<Signals>, GetSliceMetaObjFromDatabaseSignals<Signals>>;
16
19
  export {};