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 { DatabaseSignal, EndpointCls, SerializedSignal, ServiceSignal, SliceCls } from "akanjs/signal";
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 { endpoint: infer EndpCls extends EndpointCls; slice: infer SlceCls extends SliceCls }
23
+ : Signal extends DatabaseSignal<infer _IntlCls, infer EndpCls, infer SlceCls, infer _SrvrCls>
23
24
  ? GetFetchTypeFromEndpoint<EndpCls, SlceCls> & GetFetchTypeFromSlice<SlceCls>
24
- : Signal extends { endpoint: infer EndpCls extends EndpointCls }
25
+ : Signal extends ServiceSignal<infer _IntlCls, infer EndpCls, infer _SrvrCls>
25
26
  ? GetFetchTypeFromEndpoint<EndpCls>
26
27
  : unknown;
27
28
 
28
- type FetchKeysOfProxySignal<Signal> = Signal extends { _FetchType: infer FetchType } ? keyof FetchType : never;
29
- type FetchKeysOfProxySignals<Signals extends readonly FetchSignalInput[]> = FetchKeysOfProxySignal<Signals[number]>;
30
-
31
- type LastProxyFetchValue<
29
+ type MergeProxyFetchTypes<
32
30
  Signals extends readonly FetchSignalInput[],
33
- Key extends PropertyKey,
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
- ? Key extends keyof FetchType
38
- ? LastProxyFetchValue<Rest, Key, FetchType[Key]>
39
- : LastProxyFetchValue<Rest, Key, Current>
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 & FetchTypeOfSignal<First>>
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
- ? Omit<ProxyFetch, keyof DirectFetch> & DirectFetch
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 `${Signal["slice"]["baseName"]}${Capitalize<keyof Signal["slice"][typeof SLICE_META] & string>}`]: SliceMeta;
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 & GetSliceMetaObjFromSignal<First>>
28
+ ? GetSliceMetaObjFromDatabaseSignals<Rest, Assign<Acc, GetSliceMetaObjFromSignal<First>>>
29
29
  : Acc;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "akanjs",
3
- "version": "2.3.4",
3
+ "version": "2.3.5-rc.0",
4
4
  "sourceType": "module",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -1,4 +1,5 @@
1
- import type { DatabaseSignal, EndpointCls, SerializedSignal, ServiceSignal, SliceCls } from "akanjs/signal";
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
- endpoint: infer EndpCls extends EndpointCls;
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
- } ? keyof FetchType : never;
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 & FetchTypeOfSignal<First>> : Acc;
37
- export type MergeAllFetchTypes<Signals extends readonly FetchSignalInput[]> = MergeProxyFetchTypes<Signals> extends infer ProxyFetch ? MergeDirectFetchTypes<Signals> extends infer DirectFetch ? Omit<ProxyFetch, keyof DirectFetch> & DirectFetch : never : never;
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 {};
@@ -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 `${Signal["slice"]["baseName"]}${Capitalize<keyof Signal["slice"][typeof SLICE_META] & string>}`]: SliceMeta;
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 & GetSliceMetaObjFromSignal<First>> : 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 {};