akanjs 2.3.4 → 2.3.5-rc.0
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.
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Assign } from "akanjs/base";
|
|
2
|
+
import type { DatabaseSignal, SerializedSignal, ServiceSignal } from "akanjs/signal";
|
|
2
3
|
import type { FetchProxy } from "../client";
|
|
3
4
|
import type { GetSliceMetaObjFromDatabaseSignals } from "../types";
|
|
4
5
|
import type { SliceMeta } from "./appliedReturn.type";
|
|
@@ -19,34 +20,20 @@ export type FetchSignalInput = FetchProxySignalInput | DatabaseSignal | ServiceS
|
|
|
19
20
|
|
|
20
21
|
export type FetchTypeOfSignal<Signal extends FetchSignalInput> = Signal extends { _FetchType: infer FetchType }
|
|
21
22
|
? FetchType
|
|
22
|
-
: Signal extends
|
|
23
|
+
: Signal extends DatabaseSignal<infer _IntlCls, infer EndpCls, infer SlceCls, infer _SrvrCls>
|
|
23
24
|
? GetFetchTypeFromEndpoint<EndpCls, SlceCls> & GetFetchTypeFromSlice<SlceCls>
|
|
24
|
-
: Signal extends
|
|
25
|
+
: Signal extends ServiceSignal<infer _IntlCls, infer EndpCls, infer _SrvrCls>
|
|
25
26
|
? GetFetchTypeFromEndpoint<EndpCls>
|
|
26
27
|
: unknown;
|
|
27
28
|
|
|
28
|
-
type
|
|
29
|
-
type FetchKeysOfProxySignals<Signals extends readonly FetchSignalInput[]> = FetchKeysOfProxySignal<Signals[number]>;
|
|
30
|
-
|
|
31
|
-
type LastProxyFetchValue<
|
|
29
|
+
type MergeProxyFetchTypes<
|
|
32
30
|
Signals extends readonly FetchSignalInput[],
|
|
33
|
-
|
|
34
|
-
Current = never,
|
|
31
|
+
Acc = Record<never, never>,
|
|
35
32
|
> = Signals extends readonly [infer First extends FetchSignalInput, ...infer Rest extends readonly FetchSignalInput[]]
|
|
36
33
|
? First extends { _FetchType: infer FetchType }
|
|
37
|
-
?
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
: LastProxyFetchValue<Rest, Key, Current>
|
|
41
|
-
: Current;
|
|
42
|
-
|
|
43
|
-
type MergeProxyFetchTypes<Signals extends readonly FetchSignalInput[]> = [FetchKeysOfProxySignals<Signals>] extends [
|
|
44
|
-
never,
|
|
45
|
-
]
|
|
46
|
-
? Record<never, never>
|
|
47
|
-
: {
|
|
48
|
-
[Key in FetchKeysOfProxySignals<Signals>]: LastProxyFetchValue<Signals, Key>;
|
|
49
|
-
};
|
|
34
|
+
? MergeProxyFetchTypes<Rest, Assign<Acc, FetchType>>
|
|
35
|
+
: MergeProxyFetchTypes<Rest, Acc>
|
|
36
|
+
: Acc;
|
|
50
37
|
|
|
51
38
|
type MergeDirectFetchTypes<
|
|
52
39
|
Signals extends readonly FetchSignalInput[],
|
|
@@ -54,13 +41,13 @@ type MergeDirectFetchTypes<
|
|
|
54
41
|
> = Signals extends readonly [infer First extends FetchSignalInput, ...infer Rest extends readonly FetchSignalInput[]]
|
|
55
42
|
? First extends { _FetchType: unknown }
|
|
56
43
|
? MergeDirectFetchTypes<Rest, Acc>
|
|
57
|
-
: MergeDirectFetchTypes<Rest, Acc
|
|
44
|
+
: MergeDirectFetchTypes<Rest, Assign<Acc, FetchTypeOfSignal<First>>>
|
|
58
45
|
: Acc;
|
|
59
46
|
|
|
60
47
|
export type MergeAllFetchTypes<Signals extends readonly FetchSignalInput[]> =
|
|
61
48
|
MergeProxyFetchTypes<Signals> extends infer ProxyFetch
|
|
62
49
|
? MergeDirectFetchTypes<Signals> extends infer DirectFetch
|
|
63
|
-
?
|
|
50
|
+
? Assign<ProxyFetch, DirectFetch>
|
|
64
51
|
: never
|
|
65
52
|
: never;
|
|
66
53
|
|
package/fetch/types.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type Environment, getEnv, type SLICE_META } from "akanjs/base";
|
|
1
|
+
import { type Assign, type Environment, getEnv, type SLICE_META } from "akanjs/base";
|
|
2
2
|
import type { DatabaseSignal } from "akanjs/signal";
|
|
3
3
|
import type { SliceMeta } from "./fetchType/appliedReturn.type";
|
|
4
4
|
|
|
@@ -16,14 +16,14 @@ type GetSliceMetaObjFromSignal<Signal> = Signal extends {
|
|
|
16
16
|
_SliceMetaObj: infer SliceMetaObj extends Record<string, SliceMeta>;
|
|
17
17
|
}
|
|
18
18
|
? SliceMetaObj
|
|
19
|
-
: Signal extends DatabaseSignal
|
|
19
|
+
: Signal extends DatabaseSignal<infer _IntlCls, infer _EndpCls, infer SlceCls, infer _SrvrCls>
|
|
20
20
|
? {
|
|
21
|
-
[K in `${
|
|
21
|
+
[K in `${SlceCls["baseName"]}${Capitalize<keyof SlceCls[typeof SLICE_META] & string>}`]: SliceMeta;
|
|
22
22
|
}
|
|
23
23
|
: Record<never, never>;
|
|
24
24
|
export type GetSliceMetaObjFromDatabaseSignals<
|
|
25
25
|
Signals extends readonly unknown[],
|
|
26
26
|
Acc extends Record<string, SliceMeta> = Record<never, never>,
|
|
27
27
|
> = Signals extends readonly [infer First, ...infer Rest]
|
|
28
|
-
? GetSliceMetaObjFromDatabaseSignals<Rest, Acc
|
|
28
|
+
? GetSliceMetaObjFromDatabaseSignals<Rest, Assign<Acc, GetSliceMetaObjFromSignal<First>>>
|
|
29
29
|
: Acc;
|
package/package.json
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Assign } from "akanjs/base";
|
|
2
|
+
import type { DatabaseSignal, SerializedSignal, ServiceSignal } from "akanjs/signal";
|
|
2
3
|
import type { FetchProxy } from "../client.d.ts";
|
|
3
4
|
import type { GetSliceMetaObjFromDatabaseSignals } from "../types.d.ts";
|
|
4
5
|
import type { SliceMeta } from "./appliedReturn.type";
|
|
@@ -13,27 +14,13 @@ export type FetchProxySignalInput<FetchType = unknown, SliceMetaObj extends Reco
|
|
|
13
14
|
export type FetchSignalInput = FetchProxySignalInput | DatabaseSignal | ServiceSignal;
|
|
14
15
|
export type FetchTypeOfSignal<Signal extends FetchSignalInput> = Signal extends {
|
|
15
16
|
_FetchType: infer FetchType;
|
|
16
|
-
} ? FetchType : Signal extends
|
|
17
|
-
|
|
18
|
-
slice: infer SlceCls extends SliceCls;
|
|
19
|
-
} ? GetFetchTypeFromEndpoint<EndpCls, SlceCls> & GetFetchTypeFromSlice<SlceCls> : Signal extends {
|
|
20
|
-
endpoint: infer EndpCls extends EndpointCls;
|
|
21
|
-
} ? GetFetchTypeFromEndpoint<EndpCls> : unknown;
|
|
22
|
-
type FetchKeysOfProxySignal<Signal> = Signal extends {
|
|
17
|
+
} ? FetchType : Signal extends DatabaseSignal<infer _IntlCls, infer EndpCls, infer SlceCls, infer _SrvrCls> ? GetFetchTypeFromEndpoint<EndpCls, SlceCls> & GetFetchTypeFromSlice<SlceCls> : Signal extends ServiceSignal<infer _IntlCls, infer EndpCls, infer _SrvrCls> ? GetFetchTypeFromEndpoint<EndpCls> : unknown;
|
|
18
|
+
type MergeProxyFetchTypes<Signals extends readonly FetchSignalInput[], Acc = Record<never, never>> = Signals extends readonly [infer First extends FetchSignalInput, ...infer Rest extends readonly FetchSignalInput[]] ? First extends {
|
|
23
19
|
_FetchType: infer FetchType;
|
|
24
|
-
} ?
|
|
25
|
-
type FetchKeysOfProxySignals<Signals extends readonly FetchSignalInput[]> = FetchKeysOfProxySignal<Signals[number]>;
|
|
26
|
-
type LastProxyFetchValue<Signals extends readonly FetchSignalInput[], Key extends PropertyKey, Current = never> = Signals extends readonly [infer First extends FetchSignalInput, ...infer Rest extends readonly FetchSignalInput[]] ? First extends {
|
|
27
|
-
_FetchType: infer FetchType;
|
|
28
|
-
} ? Key extends keyof FetchType ? LastProxyFetchValue<Rest, Key, FetchType[Key]> : LastProxyFetchValue<Rest, Key, Current> : LastProxyFetchValue<Rest, Key, Current> : Current;
|
|
29
|
-
type MergeProxyFetchTypes<Signals extends readonly FetchSignalInput[]> = [FetchKeysOfProxySignals<Signals>] extends [
|
|
30
|
-
never
|
|
31
|
-
] ? Record<never, never> : {
|
|
32
|
-
[Key in FetchKeysOfProxySignals<Signals>]: LastProxyFetchValue<Signals, Key>;
|
|
33
|
-
};
|
|
20
|
+
} ? MergeProxyFetchTypes<Rest, Assign<Acc, FetchType>> : MergeProxyFetchTypes<Rest, Acc> : Acc;
|
|
34
21
|
type MergeDirectFetchTypes<Signals extends readonly FetchSignalInput[], Acc = Record<never, never>> = Signals extends readonly [infer First extends FetchSignalInput, ...infer Rest extends readonly FetchSignalInput[]] ? First extends {
|
|
35
22
|
_FetchType: unknown;
|
|
36
|
-
} ? MergeDirectFetchTypes<Rest, Acc> : MergeDirectFetchTypes<Rest, Acc
|
|
37
|
-
export type MergeAllFetchTypes<Signals extends readonly FetchSignalInput[]> = MergeProxyFetchTypes<Signals> extends infer ProxyFetch ? MergeDirectFetchTypes<Signals> extends infer DirectFetch ?
|
|
23
|
+
} ? MergeDirectFetchTypes<Rest, Acc> : MergeDirectFetchTypes<Rest, Assign<Acc, FetchTypeOfSignal<First>>> : Acc;
|
|
24
|
+
export type MergeAllFetchTypes<Signals extends readonly FetchSignalInput[]> = MergeProxyFetchTypes<Signals> extends infer ProxyFetch ? MergeDirectFetchTypes<Signals> extends infer DirectFetch ? Assign<ProxyFetch, DirectFetch> : never : never;
|
|
38
25
|
export type FetchClientType<Signals extends readonly FetchSignalInput[]> = FetchProxy<MergeAllFetchTypes<Signals>, GetSliceMetaObjFromDatabaseSignals<Signals>>;
|
|
39
26
|
export {};
|
package/types/fetch/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type Environment, type SLICE_META } from "akanjs/base";
|
|
1
|
+
import { type Assign, type Environment, type SLICE_META } from "akanjs/base";
|
|
2
2
|
import type { DatabaseSignal } from "akanjs/signal";
|
|
3
3
|
import type { SliceMeta } from "./fetchType/appliedReturn.type";
|
|
4
4
|
/** Account data made available to services for the current app/environment. */
|
|
@@ -9,8 +9,8 @@ export type Account<AddData = unknown> = {
|
|
|
9
9
|
export declare const getDefaultAccount: () => Account;
|
|
10
10
|
type GetSliceMetaObjFromSignal<Signal> = Signal extends {
|
|
11
11
|
_SliceMetaObj: infer SliceMetaObj extends Record<string, SliceMeta>;
|
|
12
|
-
} ? SliceMetaObj : Signal extends DatabaseSignal ? {
|
|
13
|
-
[K in `${
|
|
12
|
+
} ? SliceMetaObj : Signal extends DatabaseSignal<infer _IntlCls, infer _EndpCls, infer SlceCls, infer _SrvrCls> ? {
|
|
13
|
+
[K in `${SlceCls["baseName"]}${Capitalize<keyof SlceCls[typeof SLICE_META] & string>}`]: SliceMeta;
|
|
14
14
|
} : Record<never, never>;
|
|
15
|
-
export type GetSliceMetaObjFromDatabaseSignals<Signals extends readonly unknown[], Acc extends Record<string, SliceMeta> = Record<never, never>> = Signals extends readonly [infer First, ...infer Rest] ? GetSliceMetaObjFromDatabaseSignals<Rest, Acc
|
|
15
|
+
export type GetSliceMetaObjFromDatabaseSignals<Signals extends readonly unknown[], Acc extends Record<string, SliceMeta> = Record<never, never>> = Signals extends readonly [infer First, ...infer Rest] ? GetSliceMetaObjFromDatabaseSignals<Rest, Assign<Acc, GetSliceMetaObjFromSignal<First>>> : Acc;
|
|
16
16
|
export {};
|