@akanjs/store 0.9.42 → 0.9.43
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.
- package/cjs/src/storeDecorators.js +7 -38
- package/esm/src/storeDecorators.js +11 -41
- package/package.json +1 -1
- package/src/baseSt.d.ts +49 -120
- package/src/storeDecorators.d.ts +124 -120
|
@@ -126,7 +126,10 @@ const createState = (gql) => {
|
|
|
126
126
|
};
|
|
127
127
|
return Object.assign(acc, singleSliceState);
|
|
128
128
|
}, {});
|
|
129
|
-
return {
|
|
129
|
+
return {
|
|
130
|
+
...baseState,
|
|
131
|
+
...sliceState
|
|
132
|
+
};
|
|
130
133
|
};
|
|
131
134
|
const createActions = (gql) => {
|
|
132
135
|
const formSetterActions = makeFormSetter(gql);
|
|
@@ -253,7 +256,6 @@ const makeFormSetter = (gql) => {
|
|
|
253
256
|
const makeActions = (gql) => {
|
|
254
257
|
const [fieldName, className] = [(0, import_common.lowerlize)(gql.refName), (0, import_common.capitalize)(gql.refName)];
|
|
255
258
|
const modelRef = (0, import_constant.getFullModelRef)(className);
|
|
256
|
-
const lightModelRef = (0, import_constant.getLightModelRef)(modelRef);
|
|
257
259
|
const names = {
|
|
258
260
|
model: fieldName,
|
|
259
261
|
_model: `_${fieldName}`,
|
|
@@ -856,9 +858,6 @@ const scalarStateOf = (refName, state) => {
|
|
|
856
858
|
const applyState = state;
|
|
857
859
|
setStoreMeta(refName, { refName, useKeys: Object.keys(applyState), doKeys: [], slices: [] });
|
|
858
860
|
class StateStore {
|
|
859
|
-
get;
|
|
860
|
-
set;
|
|
861
|
-
pick;
|
|
862
861
|
}
|
|
863
862
|
Object.keys(applyState).forEach(
|
|
864
863
|
(key) => Object.defineProperty(StateStore.prototype, key, { value: applyState[key] })
|
|
@@ -1042,39 +1041,9 @@ const makeStore = (st, storeRef, { library } = {}) => {
|
|
|
1042
1041
|
);
|
|
1043
1042
|
return createSelectors(zustandStore, st);
|
|
1044
1043
|
};
|
|
1045
|
-
const MixStore = (
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
s2,
|
|
1049
|
-
s3,
|
|
1050
|
-
s4,
|
|
1051
|
-
s5,
|
|
1052
|
-
s6,
|
|
1053
|
-
s7,
|
|
1054
|
-
s8,
|
|
1055
|
-
s9,
|
|
1056
|
-
s10,
|
|
1057
|
-
s11,
|
|
1058
|
-
s12,
|
|
1059
|
-
s13,
|
|
1060
|
-
s14,
|
|
1061
|
-
s15,
|
|
1062
|
-
s16,
|
|
1063
|
-
s17,
|
|
1064
|
-
s18,
|
|
1065
|
-
s19,
|
|
1066
|
-
s20,
|
|
1067
|
-
s21,
|
|
1068
|
-
s22,
|
|
1069
|
-
s23,
|
|
1070
|
-
s24,
|
|
1071
|
-
s25,
|
|
1072
|
-
s26,
|
|
1073
|
-
s27,
|
|
1074
|
-
s28,
|
|
1075
|
-
s29,
|
|
1076
|
-
s30
|
|
1077
|
-
].filter((s) => !!s);
|
|
1044
|
+
const MixStore = (...stores) => {
|
|
1045
|
+
if (stores.length === 0)
|
|
1046
|
+
throw new Error("MixStores requires at least one store");
|
|
1078
1047
|
class Mix {
|
|
1079
1048
|
}
|
|
1080
1049
|
(0, import_common.applyMixins)(Mix, stores);
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
DataList
|
|
4
|
+
} from "@akanjs/base";
|
|
3
5
|
import {
|
|
4
6
|
applyMixins,
|
|
5
7
|
capitalize,
|
|
@@ -12,8 +14,7 @@ import {
|
|
|
12
14
|
import {
|
|
13
15
|
getClassMeta,
|
|
14
16
|
getFieldMetas,
|
|
15
|
-
getFullModelRef
|
|
16
|
-
getLightModelRef
|
|
17
|
+
getFullModelRef
|
|
17
18
|
} from "@akanjs/constant";
|
|
18
19
|
import { msg } from "@akanjs/dictionary";
|
|
19
20
|
import {
|
|
@@ -111,7 +112,10 @@ const createState = (gql) => {
|
|
|
111
112
|
};
|
|
112
113
|
return Object.assign(acc, singleSliceState);
|
|
113
114
|
}, {});
|
|
114
|
-
return {
|
|
115
|
+
return {
|
|
116
|
+
...baseState,
|
|
117
|
+
...sliceState
|
|
118
|
+
};
|
|
115
119
|
};
|
|
116
120
|
const createActions = (gql) => {
|
|
117
121
|
const formSetterActions = makeFormSetter(gql);
|
|
@@ -238,7 +242,6 @@ const makeFormSetter = (gql) => {
|
|
|
238
242
|
const makeActions = (gql) => {
|
|
239
243
|
const [fieldName, className] = [lowerlize(gql.refName), capitalize(gql.refName)];
|
|
240
244
|
const modelRef = getFullModelRef(className);
|
|
241
|
-
const lightModelRef = getLightModelRef(modelRef);
|
|
242
245
|
const names = {
|
|
243
246
|
model: fieldName,
|
|
244
247
|
_model: `_${fieldName}`,
|
|
@@ -841,9 +844,6 @@ const scalarStateOf = (refName, state) => {
|
|
|
841
844
|
const applyState = state;
|
|
842
845
|
setStoreMeta(refName, { refName, useKeys: Object.keys(applyState), doKeys: [], slices: [] });
|
|
843
846
|
class StateStore {
|
|
844
|
-
get;
|
|
845
|
-
set;
|
|
846
|
-
pick;
|
|
847
847
|
}
|
|
848
848
|
Object.keys(applyState).forEach(
|
|
849
849
|
(key) => Object.defineProperty(StateStore.prototype, key, { value: applyState[key] })
|
|
@@ -1027,39 +1027,9 @@ const makeStore = (st, storeRef, { library } = {}) => {
|
|
|
1027
1027
|
);
|
|
1028
1028
|
return createSelectors(zustandStore, st);
|
|
1029
1029
|
};
|
|
1030
|
-
const MixStore = (
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
s2,
|
|
1034
|
-
s3,
|
|
1035
|
-
s4,
|
|
1036
|
-
s5,
|
|
1037
|
-
s6,
|
|
1038
|
-
s7,
|
|
1039
|
-
s8,
|
|
1040
|
-
s9,
|
|
1041
|
-
s10,
|
|
1042
|
-
s11,
|
|
1043
|
-
s12,
|
|
1044
|
-
s13,
|
|
1045
|
-
s14,
|
|
1046
|
-
s15,
|
|
1047
|
-
s16,
|
|
1048
|
-
s17,
|
|
1049
|
-
s18,
|
|
1050
|
-
s19,
|
|
1051
|
-
s20,
|
|
1052
|
-
s21,
|
|
1053
|
-
s22,
|
|
1054
|
-
s23,
|
|
1055
|
-
s24,
|
|
1056
|
-
s25,
|
|
1057
|
-
s26,
|
|
1058
|
-
s27,
|
|
1059
|
-
s28,
|
|
1060
|
-
s29,
|
|
1061
|
-
s30
|
|
1062
|
-
].filter((s) => !!s);
|
|
1030
|
+
const MixStore = (...stores) => {
|
|
1031
|
+
if (stores.length === 0)
|
|
1032
|
+
throw new Error("MixStores requires at least one store");
|
|
1063
1033
|
class Mix {
|
|
1064
1034
|
}
|
|
1065
1035
|
applyMixins(Mix, stores);
|
package/package.json
CHANGED
package/src/baseSt.d.ts
CHANGED
|
@@ -6,79 +6,43 @@ declare const defaultMessage: {
|
|
|
6
6
|
duration: number;
|
|
7
7
|
key: string;
|
|
8
8
|
};
|
|
9
|
-
declare const RootStore_base: import("@akanjs/base").Type<{
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
[key: string]: string;
|
|
16
|
-
};
|
|
17
|
-
searchParams: {
|
|
18
|
-
[key: string]: string;
|
|
19
|
-
};
|
|
20
|
-
theme: string;
|
|
21
|
-
prefix: string | undefined;
|
|
22
|
-
innerWidth: number;
|
|
23
|
-
innerHeight: number;
|
|
24
|
-
responsive: Responsive;
|
|
25
|
-
uiOperation: "sleep" | "loading" | "idle";
|
|
26
|
-
messages: (typeof defaultMessage)[];
|
|
27
|
-
tryJwt: string | null;
|
|
28
|
-
trySignalType: SignalType;
|
|
29
|
-
tryRoles: RoleType[];
|
|
30
|
-
tryAccount: {
|
|
31
|
-
__InternalArg__: "Account";
|
|
32
|
-
self?: import("@akanjs/signal").Self;
|
|
33
|
-
me?: import("@akanjs/signal").Me;
|
|
34
|
-
appName: string;
|
|
35
|
-
environment: import("@akanjs/base").Environment;
|
|
36
|
-
};
|
|
37
|
-
keyboardHeight: number;
|
|
38
|
-
pageState: import("@akanjs/client").PageState;
|
|
39
|
-
devMode: boolean;
|
|
40
|
-
getSelf: ({ reset }?: {
|
|
41
|
-
reset?: boolean;
|
|
42
|
-
}) => Promise<void>;
|
|
43
|
-
deviceToken: string;
|
|
44
|
-
currentPath: string;
|
|
9
|
+
declare const RootStore_base: import("@akanjs/base").Type<import("./storeDecorators").SetGet<{
|
|
10
|
+
csrLoaded: boolean;
|
|
11
|
+
path: string;
|
|
12
|
+
pathname: string;
|
|
13
|
+
params: {
|
|
14
|
+
[key: string]: string;
|
|
45
15
|
};
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
getSelf: ({ reset }?: {
|
|
77
|
-
reset?: boolean;
|
|
78
|
-
}) => Promise<void>;
|
|
79
|
-
deviceToken: string;
|
|
80
|
-
currentPath: string;
|
|
81
|
-
}> | ((state: {
|
|
16
|
+
searchParams: {
|
|
17
|
+
[key: string]: string;
|
|
18
|
+
};
|
|
19
|
+
theme: string;
|
|
20
|
+
prefix: string | undefined;
|
|
21
|
+
innerWidth: number;
|
|
22
|
+
innerHeight: number;
|
|
23
|
+
responsive: Responsive;
|
|
24
|
+
uiOperation: "sleep" | "loading" | "idle";
|
|
25
|
+
messages: (typeof defaultMessage)[];
|
|
26
|
+
tryJwt: string | null;
|
|
27
|
+
trySignalType: SignalType;
|
|
28
|
+
tryRoles: RoleType[];
|
|
29
|
+
tryAccount: {
|
|
30
|
+
__InternalArg__: "Account";
|
|
31
|
+
self?: import("@akanjs/signal").Self;
|
|
32
|
+
me?: import("@akanjs/signal").Me;
|
|
33
|
+
appName: string;
|
|
34
|
+
environment: import("@akanjs/base").Environment;
|
|
35
|
+
};
|
|
36
|
+
keyboardHeight: number;
|
|
37
|
+
pageState: import("@akanjs/client").PageState;
|
|
38
|
+
devMode: boolean;
|
|
39
|
+
getSelf: ({ reset }?: {
|
|
40
|
+
reset?: boolean;
|
|
41
|
+
}) => Promise<void>;
|
|
42
|
+
deviceToken: string;
|
|
43
|
+
currentPath: string;
|
|
44
|
+
}> & {
|
|
45
|
+
__STATE_INFO__: {
|
|
82
46
|
csrLoaded: boolean;
|
|
83
47
|
path: string;
|
|
84
48
|
pathname: string;
|
|
@@ -113,44 +77,19 @@ declare const RootStore_base: import("@akanjs/base").Type<{
|
|
|
113
77
|
}) => Promise<void>;
|
|
114
78
|
deviceToken: string;
|
|
115
79
|
currentPath: string;
|
|
116
|
-
}) => any)) => void;
|
|
117
|
-
readonly pick: (...fields: ("path" | "params" | "prefix" | "pathname" | "searchParams" | "innerHeight" | "innerWidth" | "csrLoaded" | "theme" | "tryAccount" | "keyboardHeight" | "pageState" | "devMode" | "getSelf" | "responsive" | "uiOperation" | "messages" | "tryJwt" | "trySignalType" | "tryRoles" | "deviceToken" | "currentPath")[]) => {
|
|
118
|
-
path: string;
|
|
119
|
-
params: {
|
|
120
|
-
[key: string]: string;
|
|
121
|
-
};
|
|
122
|
-
prefix: string;
|
|
123
|
-
pathname: string;
|
|
124
|
-
searchParams: {
|
|
125
|
-
[key: string]: string;
|
|
126
|
-
};
|
|
127
|
-
innerHeight: number;
|
|
128
|
-
innerWidth: number;
|
|
129
|
-
csrLoaded: boolean;
|
|
130
|
-
theme: string;
|
|
131
|
-
tryAccount: {
|
|
132
|
-
__InternalArg__: "Account";
|
|
133
|
-
self?: import("@akanjs/signal").Self;
|
|
134
|
-
me?: import("@akanjs/signal").Me;
|
|
135
|
-
appName: string;
|
|
136
|
-
environment: import("@akanjs/base").Environment;
|
|
137
|
-
};
|
|
138
|
-
keyboardHeight: number;
|
|
139
|
-
pageState: import("@akanjs/client").PageState;
|
|
140
|
-
devMode: boolean;
|
|
141
|
-
getSelf: ({ reset }?: {
|
|
142
|
-
reset?: boolean;
|
|
143
|
-
}) => Promise<void>;
|
|
144
|
-
responsive: Responsive;
|
|
145
|
-
uiOperation: "sleep" | "idle";
|
|
146
|
-
messages: (typeof defaultMessage)[];
|
|
147
|
-
tryJwt: string;
|
|
148
|
-
trySignalType: SignalType;
|
|
149
|
-
tryRoles: RoleType[];
|
|
150
|
-
deviceToken: string;
|
|
151
|
-
currentPath: string;
|
|
152
80
|
};
|
|
153
|
-
|
|
81
|
+
__SLICE_INFO__: {};
|
|
82
|
+
}>;
|
|
83
|
+
export declare class RootStore extends RootStore_base {
|
|
84
|
+
setDevMode(value: boolean): void;
|
|
85
|
+
setWindowSize(): void;
|
|
86
|
+
showMessage(message: {
|
|
87
|
+
content: string | string[];
|
|
88
|
+
} & Partial<typeof defaultMessage>): void;
|
|
89
|
+
hideMessage(key: string): void;
|
|
90
|
+
}
|
|
91
|
+
export declare const store: typeof RootStore;
|
|
92
|
+
export declare const st: import("./storeDecorators").WithSelectors<{
|
|
154
93
|
csrLoaded: boolean;
|
|
155
94
|
path: string;
|
|
156
95
|
pathname: string;
|
|
@@ -185,15 +124,5 @@ declare const RootStore_base: import("@akanjs/base").Type<{
|
|
|
185
124
|
}) => Promise<void>;
|
|
186
125
|
deviceToken: string;
|
|
187
126
|
currentPath: string;
|
|
188
|
-
}>;
|
|
189
|
-
export declare class RootStore extends RootStore_base {
|
|
190
|
-
setDevMode(value: boolean): void;
|
|
191
|
-
setWindowSize(): void;
|
|
192
|
-
showMessage(message: {
|
|
193
|
-
content: string | string[];
|
|
194
|
-
} & Partial<typeof defaultMessage>): void;
|
|
195
|
-
hideMessage(key: string): void;
|
|
196
|
-
}
|
|
197
|
-
export declare const store: typeof RootStore;
|
|
198
|
-
export declare const st: import("./storeDecorators").WithSelectors<RootStore> & import("./storeDecorators").WithSelectors<any>;
|
|
127
|
+
}, RootStore, {}>;
|
|
199
128
|
export {};
|
package/src/storeDecorators.d.ts
CHANGED
|
@@ -1,67 +1,69 @@
|
|
|
1
|
-
import { DataList, type
|
|
1
|
+
import { DataList, type MergeAllKeyOfTypes, type MergeAllTypes, type MergedValues, type Prettify, Type } from "@akanjs/base";
|
|
2
2
|
import { type FetchPolicy } from "@akanjs/common";
|
|
3
|
-
import { DocumentModel, type FilterType, type GetStateObject, ProtoFile, QueryOf, type SortOf } from "@akanjs/constant";
|
|
4
|
-
import { DbGraphQL,
|
|
3
|
+
import { DefaultOf, DocumentModel, FieldState, type FilterType, type GetActionObject, type GetStateObject, ProtoFile, QueryOf, type SortOf } from "@akanjs/constant";
|
|
4
|
+
import { DbGraphQL, type DynamicSliceArgMap, FetchInitForm } from "@akanjs/signal";
|
|
5
5
|
import { RefObject } from "react";
|
|
6
6
|
import { Mutate, StoreApi } from "zustand";
|
|
7
7
|
import type { Submit } from "./types";
|
|
8
|
-
export declare const baseSt: WithSelectors<
|
|
9
|
-
type BaseState<T extends string, Full
|
|
10
|
-
[K in
|
|
8
|
+
export declare const baseSt: WithSelectors<unknown, unknown, {}>;
|
|
9
|
+
type BaseState<T extends string, Full, _Default = DefaultOf<Full>> = {
|
|
10
|
+
[K in T]: Full | null;
|
|
11
11
|
} & {
|
|
12
|
-
[K in `${
|
|
12
|
+
[K in `${T}Loading`]: string | boolean;
|
|
13
13
|
} & {
|
|
14
|
-
[K in `${
|
|
14
|
+
[K in `${T}Form`]: _Default;
|
|
15
15
|
} & {
|
|
16
|
-
[K in `${
|
|
16
|
+
[K in `${T}FormLoading`]: string | boolean;
|
|
17
17
|
} & {
|
|
18
|
-
[K in `${
|
|
18
|
+
[K in `${T}Submit`]: Submit;
|
|
19
19
|
} & {
|
|
20
|
-
[K in `${
|
|
20
|
+
[K in `${T}ViewAt`]: Date;
|
|
21
21
|
} & {
|
|
22
|
-
[K in `${
|
|
22
|
+
[K in `${T}Modal`]: string | null;
|
|
23
23
|
} & {
|
|
24
|
-
[K in `${
|
|
24
|
+
[K in `${T}Operation`]: "sleep" | "reset" | "idle" | "error" | "loading";
|
|
25
25
|
};
|
|
26
26
|
type SliceState<T extends string, Full, Light extends {
|
|
27
27
|
id: string;
|
|
28
|
-
}, QueryArgs, Insight, Filter extends FilterType,
|
|
29
|
-
[K in `default${
|
|
28
|
+
}, QueryArgs, Insight, Filter extends FilterType, _CapitalizedT extends string = Capitalize<T>, _Default = DefaultOf<Full>, _Sort = SortOf<Filter>> = {
|
|
29
|
+
[K in `default${_CapitalizedT}`]: _Default;
|
|
30
30
|
} & {
|
|
31
|
-
[K in `${
|
|
31
|
+
[K in `${T}List`]: DataList<Light>;
|
|
32
32
|
} & {
|
|
33
|
-
[K in `${
|
|
33
|
+
[K in `${T}ListLoading`]: boolean;
|
|
34
34
|
} & {
|
|
35
|
-
[K in `${
|
|
35
|
+
[K in `${T}InitList`]: DataList<Light>;
|
|
36
36
|
} & {
|
|
37
|
-
[K in `${
|
|
37
|
+
[K in `${T}InitAt`]: Date;
|
|
38
38
|
} & {
|
|
39
|
-
[K in `${
|
|
39
|
+
[K in `${T}Selection`]: DataList<Light>;
|
|
40
40
|
} & {
|
|
41
|
-
[K in `${
|
|
41
|
+
[K in `${T}Insight`]: Insight;
|
|
42
42
|
} & {
|
|
43
|
-
[K in `lastPageOf${
|
|
43
|
+
[K in `lastPageOf${_CapitalizedT}`]: number;
|
|
44
44
|
} & {
|
|
45
|
-
[K in `pageOf${
|
|
45
|
+
[K in `pageOf${_CapitalizedT}`]: number;
|
|
46
46
|
} & {
|
|
47
|
-
[K in `limitOf${
|
|
47
|
+
[K in `limitOf${_CapitalizedT}`]: number;
|
|
48
48
|
} & {
|
|
49
|
-
[K in `queryArgsOf${
|
|
49
|
+
[K in `queryArgsOf${_CapitalizedT}`]: QueryArgs;
|
|
50
50
|
} & {
|
|
51
|
-
[K in `sortOf${
|
|
51
|
+
[K in `sortOf${_CapitalizedT}`]: _Sort;
|
|
52
52
|
};
|
|
53
|
-
type
|
|
54
|
-
[K in keyof T]: T[K] extends object ? T[K] : never;
|
|
55
|
-
}[keyof T];
|
|
56
|
-
type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
|
|
57
|
-
type DefaultState<T extends string, Full, Light extends {
|
|
53
|
+
type DefaultState<T extends string, Input, Full, Light extends {
|
|
58
54
|
id: string;
|
|
59
|
-
}, Insight, Filter extends FilterType, Signal
|
|
60
|
-
|
|
61
|
-
|
|
55
|
+
}, Insight, Filter extends FilterType, Signal, _CapitalizedT extends string = Capitalize<T>, _Default = DefaultOf<Full>, _DefaultInput = DefaultOf<Input>, _DefaultState = GetStateObject<Full>, _DefaultStateInput = GetStateObject<Input>, _Doc = DocumentModel<Full>, _DocInput = DocumentModel<Input>, _QueryOfDoc = QueryOf<DocumentModel<Full>>, _Query = GetActionObject<Filter>, _Sort = SortOf<Filter>, _DynamicSliceArgMap = DynamicSliceArgMap<T, Input, Full, Filter, Signal, _CapitalizedT, _DefaultInput, _Sort>, _DefaultSliceState = SliceState<T, Full, Light, [
|
|
56
|
+
query: _QueryOfDoc
|
|
57
|
+
], Insight, Filter, _CapitalizedT, _Default, _Sort>, _DynamicSliceStateMap = {
|
|
58
|
+
[Suffix in keyof _DynamicSliceArgMap as Suffix extends string ? Suffix : never]: Suffix extends string ? SliceState<T, Full, Light, _DynamicSliceArgMap[Suffix], Insight, Filter, _CapitalizedT, _Default, _Sort> : never;
|
|
59
|
+
}> = BaseState<T, Full, _Default> & _DefaultSliceState & MergedValues<{
|
|
60
|
+
[Suffix in keyof _DynamicSliceStateMap as Suffix extends string ? Suffix : never]: {
|
|
61
|
+
[K in keyof _DynamicSliceStateMap[Suffix] as K extends string ? Suffix extends string ? `${K}${Suffix}` : never : never]: _DynamicSliceStateMap[Suffix][K];
|
|
62
|
+
};
|
|
63
|
+
}>;
|
|
62
64
|
export declare const createState: <T extends string, Input, Full, Light extends {
|
|
63
65
|
id: string;
|
|
64
|
-
}, Insight, Filter extends FilterType, Fetch, Signal
|
|
66
|
+
}, Insight, Filter extends FilterType, Fetch, Signal, _CapitalizedT extends string = Capitalize<T>, _Default = DefaultOf<Full>, _DefaultInput = DefaultOf<Input>, _DefaultState = GetStateObject<Full>, _DefaultStateInput = GetStateObject<Input>, _Doc = DocumentModel<Full>, _DocInput = DocumentModel<Input>, _QueryOfDoc = QueryOf<DocumentModel<Full>>, _Query = GetActionObject<Filter>, _Sort = SortOf<Filter>, _DynamicSliceArgMap = DynamicSliceArgMap<T, Input, Full, Filter, Signal, _CapitalizedT, _DefaultInput, _Sort>>(gql: DbGraphQL<T, Input, Full, Light, Insight, Filter, Fetch, Signal, _CapitalizedT, _Default, _DefaultInput, _DefaultState, _DefaultStateInput, _Doc, _DocInput, _QueryOfDoc, _Query, _Sort, _DynamicSliceArgMap>) => DefaultState<T, Input, Full, Light, Insight, Filter, Signal, _CapitalizedT, _Default, _DefaultInput, _Doc, _DocInput, _QueryOfDoc, _Query, _Sort, _DynamicSliceArgMap>;
|
|
65
67
|
type GetState<T, K> = K extends keyof T ? T[K] : never;
|
|
66
68
|
type PickState<G> = G extends () => infer S ? PickFunc<S, keyof S> : never;
|
|
67
69
|
type PickFunc<T, F extends keyof T = keyof T> = (...fields: F[]) => {
|
|
@@ -99,91 +101,110 @@ type PartialOrNull<O> = {
|
|
|
99
101
|
};
|
|
100
102
|
type BaseAction<T extends string, Input, Full extends {
|
|
101
103
|
id: string;
|
|
102
|
-
}, Light
|
|
103
|
-
[K in `create${
|
|
104
|
+
}, Light, _CapitalizedT extends string = Capitalize<T>, _CreateOption = CreateOption<Full>> = {
|
|
105
|
+
[K in `create${_CapitalizedT}InForm`]: (options?: _CreateOption) => Promise<void>;
|
|
104
106
|
} & {
|
|
105
|
-
[K in `update${
|
|
107
|
+
[K in `update${_CapitalizedT}InForm`]: (options?: _CreateOption) => Promise<void>;
|
|
106
108
|
} & {
|
|
107
|
-
[K in `create${
|
|
109
|
+
[K in `create${_CapitalizedT}`]: (data: Input, options?: _CreateOption) => Promise<void>;
|
|
108
110
|
} & {
|
|
109
|
-
[K in `update${
|
|
111
|
+
[K in `update${_CapitalizedT}`]: (id: string, data: Input, options?: _CreateOption) => Promise<void>;
|
|
110
112
|
} & {
|
|
111
|
-
[K in `remove${
|
|
113
|
+
[K in `remove${_CapitalizedT}`]: (id: string, options?: FetchPolicy & {
|
|
112
114
|
modal?: string | null;
|
|
113
115
|
}) => Promise<void>;
|
|
114
116
|
} & {
|
|
115
|
-
[K in `check${
|
|
117
|
+
[K in `check${_CapitalizedT}Submitable`]: (disabled?: boolean) => Promise<void>;
|
|
116
118
|
} & {
|
|
117
|
-
[K in `submit${
|
|
119
|
+
[K in `submit${_CapitalizedT}`]: (options?: _CreateOption) => Promise<void>;
|
|
118
120
|
} & {
|
|
119
|
-
[K in `new${
|
|
121
|
+
[K in `new${_CapitalizedT}`]: (partial?: PartialOrNull<Full>, options?: NewOption) => void;
|
|
120
122
|
} & {
|
|
121
|
-
[K in `edit${
|
|
123
|
+
[K in `edit${_CapitalizedT}`]: (model: Full | string, options?: {
|
|
122
124
|
modal?: string | null;
|
|
123
125
|
} & FetchPolicy) => Promise<void>;
|
|
124
126
|
} & {
|
|
125
|
-
[K in `merge${
|
|
127
|
+
[K in `merge${_CapitalizedT}`]: (model: Full | string, data: Partial<Full>, options?: FetchPolicy) => Promise<void>;
|
|
126
128
|
} & {
|
|
127
|
-
[K in `view${
|
|
129
|
+
[K in `view${_CapitalizedT}`]: (model: Full | string, options?: {
|
|
128
130
|
modal?: string | null;
|
|
129
131
|
} & FetchPolicy) => Promise<void>;
|
|
130
132
|
} & {
|
|
131
|
-
[K in `set${
|
|
133
|
+
[K in `set${_CapitalizedT}`]: (model: Full | Light) => void;
|
|
132
134
|
} & {
|
|
133
|
-
[K in `reset${
|
|
135
|
+
[K in `reset${_CapitalizedT}`]: (model?: Full) => void;
|
|
134
136
|
};
|
|
135
137
|
type SliceAction<T extends string, Input, Full extends {
|
|
136
138
|
id: string;
|
|
137
|
-
}, Light, QueryArgs extends any[], Filter extends FilterType,
|
|
138
|
-
[K in `init${
|
|
139
|
+
}, Light, QueryArgs extends any[], Filter extends FilterType, _CapitalizedT extends string = Capitalize<T>, _Sort = SortOf<Filter>, _FetchInitFormWithFetchPolicy = FetchInitForm<Input, Full, Filter> & FetchPolicy> = {
|
|
140
|
+
[K in `init${_CapitalizedT}`]: (...args: [...args: QueryArgs, initForm?: _FetchInitFormWithFetchPolicy]) => Promise<void>;
|
|
139
141
|
} & {
|
|
140
|
-
[K in `refresh${
|
|
142
|
+
[K in `refresh${_CapitalizedT}`]: (...args: [...args: QueryArgs, initForm?: _FetchInitFormWithFetchPolicy]) => Promise<void>;
|
|
141
143
|
} & {
|
|
142
|
-
[K in `select${
|
|
144
|
+
[K in `select${_CapitalizedT}`]: (model: Light | Light[], options?: {
|
|
143
145
|
refresh?: boolean;
|
|
144
146
|
remove?: boolean;
|
|
145
147
|
}) => void;
|
|
146
148
|
} & {
|
|
147
|
-
[K in `setPageOf${
|
|
149
|
+
[K in `setPageOf${_CapitalizedT}`]: (page: number, options?: FetchPolicy) => Promise<void>;
|
|
148
150
|
} & {
|
|
149
|
-
[K in `addPageOf${
|
|
151
|
+
[K in `addPageOf${_CapitalizedT}`]: (page: number, options?: FetchPolicy) => Promise<void>;
|
|
150
152
|
} & {
|
|
151
|
-
[K in `setLimitOf${
|
|
153
|
+
[K in `setLimitOf${_CapitalizedT}`]: (limit: number, options?: FetchPolicy) => Promise<void>;
|
|
152
154
|
} & {
|
|
153
|
-
[K in `setQueryArgsOf${
|
|
155
|
+
[K in `setQueryArgsOf${_CapitalizedT}`]: (...args: [...args: QueryArgs, options?: FetchPolicy]) => Promise<void>;
|
|
154
156
|
} & {
|
|
155
|
-
[K in `setSortOf${
|
|
157
|
+
[K in `setSortOf${_CapitalizedT}`]: (sort: _Sort, options?: FetchPolicy) => Promise<void>;
|
|
156
158
|
};
|
|
157
159
|
type DefaultActions<T extends string, Input, Full extends {
|
|
158
160
|
id: string;
|
|
159
|
-
}, Light, Filter extends FilterType, Fetch, Signal
|
|
160
|
-
|
|
161
|
-
|
|
161
|
+
}, Light, Filter extends FilterType, Fetch, Signal, _CapitalizedT extends string = Capitalize<T>, _Default = DefaultOf<Full>, _DefaultInput = DefaultOf<Input>, _DefaultState = GetStateObject<_Default>, _DefaultStateInput = GetStateObject<_DefaultInput>, _Doc = DocumentModel<Full>, _DocInput = DocumentModel<Input>, _QueryOfDoc = QueryOf<DocumentModel<Full>>, _Sort = SortOf<Filter>, _DynamicSliceArgMap = DynamicSliceArgMap<T, Input, Full, Filter, Signal, _CapitalizedT, _DefaultInput, _Sort>, _CreateOption = CreateOption<Full>, _FetchInitFormWithFetchPolicy = FetchInitForm<Input, Full, Filter> & FetchPolicy, _DefaultSliceAction = SliceAction<T, Input, Full, Light, [
|
|
162
|
+
query: _QueryOfDoc
|
|
163
|
+
], Filter, _CapitalizedT, _Sort, _FetchInitFormWithFetchPolicy>, _DynamicSliceActionMap = {
|
|
164
|
+
[Suffix in keyof _DynamicSliceArgMap as Suffix extends string ? Suffix : never]: Suffix extends string ? _DynamicSliceArgMap[Suffix] extends any[] ? SliceAction<T, Input, Full, Light, _DynamicSliceArgMap[Suffix], Filter, _CapitalizedT, _Sort, _FetchInitFormWithFetchPolicy> : never : never;
|
|
165
|
+
}> = BaseAction<T, Input, Full, Light, _CapitalizedT, _CreateOption> & FormSetter<Full, T, _CapitalizedT, _DefaultState> & _DefaultSliceAction & MergedValues<{
|
|
166
|
+
[Suffix in keyof _DynamicSliceActionMap as Suffix extends string ? Suffix : never]: {
|
|
167
|
+
[K in keyof _DynamicSliceActionMap[Suffix] as K extends string ? Suffix extends string ? `${K}${Suffix}` : never : never]: _DynamicSliceActionMap[Suffix][K];
|
|
168
|
+
};
|
|
169
|
+
}>;
|
|
162
170
|
export declare const createActions: <T extends string, Input, Full extends {
|
|
163
171
|
id: string;
|
|
164
172
|
}, Light extends {
|
|
165
173
|
id: string;
|
|
166
|
-
}, Insight, Filter extends FilterType, Fetch, Signal>(gql: DbGraphQL<T, Input, Full, Light, Insight, Filter, Fetch, Signal>) => DefaultActions<T, Input, Full, Light, Filter, Fetch, Signal>;
|
|
174
|
+
}, Insight, Filter extends FilterType, Fetch, Signal, _CapitalizedT extends string, _Default, _DefaultInput, _DefaultState, _DefaultStateInput, _Doc, _DocInput, _QueryOfDoc, _Query, _Sort, _DynamicSliceArgMap>(gql: DbGraphQL<T, Input, Full, Light, Insight, Filter, Fetch, Signal, _CapitalizedT, _Default, _DefaultInput, _DefaultState, _DefaultStateInput, _Doc, _DocInput, _QueryOfDoc, _Query, _Sort, _DynamicSliceArgMap>) => DefaultActions<T, Input, Full, Light, Filter, Fetch, Signal, _CapitalizedT, _Default, _DefaultInput, _DefaultState, _DefaultStateInput, _Doc, _DocInput, _QueryOfDoc, _Query, _Sort, _DynamicSliceArgMap>;
|
|
167
175
|
type SingleOf<M> = M extends (infer V)[] ? V : never;
|
|
168
|
-
type SetterKey<Prefix extends string, K extends string,
|
|
169
|
-
type
|
|
170
|
-
[K in keyof
|
|
171
|
-
}
|
|
172
|
-
|
|
176
|
+
type SetterKey<Prefix extends string, K extends string, T extends string, _CapitalizedT extends string = Capitalize<T>, _CapitalizedK extends string = Capitalize<K>> = `${Prefix}${_CapitalizedK}On${_CapitalizedT}`;
|
|
177
|
+
type FieldFormSetter<DefaultState, T extends string, _CapitalizedT extends string = Capitalize<T>> = {
|
|
178
|
+
[K in keyof DefaultState as K extends string ? SetterKey<"set", K, T, _CapitalizedT> : never]: (value: FieldState<DefaultState[K]>) => void;
|
|
179
|
+
};
|
|
180
|
+
type ArrayFieldFormSetter<Key extends string, T extends string, SingleDefaultField, _CapitalizedT extends string = Capitalize<T>> = {
|
|
181
|
+
[K in SetterKey<"add", Key, T, _CapitalizedT>]: (value: SingleDefaultField | SingleDefaultField[], options?: {
|
|
173
182
|
idx?: number;
|
|
174
183
|
limit?: number;
|
|
175
184
|
}) => void;
|
|
176
185
|
} & {
|
|
177
|
-
[K in
|
|
186
|
+
[K in SetterKey<"sub", Key, T, _CapitalizedT>]: (idx: number | number[]) => void;
|
|
178
187
|
} & {
|
|
179
|
-
[K in
|
|
188
|
+
[K in SetterKey<"addOrSub", Key, T, _CapitalizedT>]: (value: SingleDefaultField, options?: {
|
|
180
189
|
idx?: number;
|
|
181
190
|
limit?: number;
|
|
182
191
|
}) => void;
|
|
192
|
+
};
|
|
193
|
+
type FormSetter<Full, T extends string, _CapitalizedT extends string = Capitalize<T>, _DefaultState = DefaultOf<Full>> = FieldFormSetter<_DefaultState, T, _CapitalizedT> & MergedValues<{
|
|
194
|
+
[K in keyof _DefaultState as _DefaultState[K] extends any[] ? K : never]: K extends string ? ArrayFieldFormSetter<K, T, DefaultOf<SingleOf<_DefaultState[K]>>, _CapitalizedT> : never;
|
|
195
|
+
}> & {
|
|
196
|
+
[K in keyof _DefaultState as _DefaultState[K] extends (ProtoFile | null) | ProtoFile[] ? K extends string ? SetterKey<"upload", K, T, _CapitalizedT> : never : never]: (fileList: FileList, idx?: number) => Promise<void>;
|
|
183
197
|
} & {
|
|
184
|
-
[K in
|
|
185
|
-
}
|
|
186
|
-
|
|
198
|
+
[K in `writeOn${_CapitalizedT}`]: (path: string | (string | number)[], value: any) => void;
|
|
199
|
+
};
|
|
200
|
+
interface SliceInfo<T extends string, State, Action> {
|
|
201
|
+
refName: T;
|
|
202
|
+
state: State;
|
|
203
|
+
action: Action;
|
|
204
|
+
}
|
|
205
|
+
type StoreInstance<ApplyState, ApplyAction, SliceInfoMap> = SetGet<ApplyState> & ApplyAction & {
|
|
206
|
+
__STATE_INFO__: ApplyState;
|
|
207
|
+
__SLICE_INFO__: SliceInfoMap;
|
|
187
208
|
};
|
|
188
209
|
export declare const stateOf: <T extends string, Input, Full extends {
|
|
189
210
|
id: string;
|
|
@@ -191,74 +212,57 @@ export declare const stateOf: <T extends string, Input, Full extends {
|
|
|
191
212
|
id: string;
|
|
192
213
|
}, Insight, Filter extends FilterType, Fetch, Signal, State extends {
|
|
193
214
|
[key: string]: any;
|
|
194
|
-
}>(gql: DbGraphQL<T, Input, Full, Light, Insight, Filter, Fetch, Signal>, state: State) => Type<
|
|
195
|
-
|
|
196
|
-
readonly set: (state: Partial<MakeState<State & { [K in Uncapitalize<T>]: Full | null; } & { [K_1 in `${Uncapitalize<T>}Loading`]: string | boolean; } & { [K_2 in `${Uncapitalize<T>}Form`]: DefaultOf<Full>; } & { [K_3 in `${Uncapitalize<T>}FormLoading`]: string | boolean; } & { [K_4 in `${Uncapitalize<T>}Submit`]: Submit; } & { [K_5 in `${Uncapitalize<T>}ViewAt`]: Date; } & { [K_6 in `${Uncapitalize<T>}Modal`]: string | null; } & { [K_7 in `${Uncapitalize<T>}Operation`]: "error" | "reset" | "sleep" | "idle" | "loading"; } & { [K_8 in `default${Capitalize<T>}`]: DefaultOf<Full>; } & { [K_9 in `${Uncapitalize<T>}List`]: DataList<Light>; } & { [K_10 in `${Uncapitalize<T>}ListLoading`]: boolean; } & { [K_11 in `${Uncapitalize<T>}InitList`]: DataList<Light>; } & { [K_12 in `${Uncapitalize<T>}InitAt`]: Date; } & { [K_13 in `${Uncapitalize<T>}Selection`]: DataList<Light>; } & { [K_14 in `${Uncapitalize<T>}Insight`]: Insight; } & { [K_15 in `lastPageOf${Capitalize<T>}`]: number; } & { [K_16 in `pageOf${Capitalize<T>}`]: number; } & { [K_17 in `limitOf${Capitalize<T>}`]: number; } & { [K_18 in `queryArgsOf${Capitalize<T>}`]: [query: QueryOf<DocumentModel<Full, Dayjs>>]; } & { [K_19 in `sortOf${Capitalize<T>}`]: Exclude<keyof { [K_20 in keyof Filter as Filter[K_20] extends (...args: any) => any ? never : K_20]: Filter[K_20]; }, "prototype">; } & UnionToIntersection<MergeFields<{ [K_21 in keyof Signal as K_21 extends `${T}List${infer Suffix}` ? K_21 : never]: K_21 extends `${T}List${infer Suffix_1}` ? Signal[K_21] extends (...args: infer Args) => Promise<Full[]> ? SliceState<T, Full, Light, import("@akanjs/signal").FilterOutInternalArgs<Args, []> extends infer T_1 ? T_1 extends import("@akanjs/signal").FilterOutInternalArgs<Args, []> ? T_1 extends [...infer Rest, any, any, any] ? Rest : T_1 : never : never, Insight, Filter, Suffix_1> : never : never; }>>>> | ((state: MakeState<State & { [K in Uncapitalize<T>]: Full | null; } & { [K_1 in `${Uncapitalize<T>}Loading`]: string | boolean; } & { [K_2 in `${Uncapitalize<T>}Form`]: DefaultOf<Full>; } & { [K_3 in `${Uncapitalize<T>}FormLoading`]: string | boolean; } & { [K_4 in `${Uncapitalize<T>}Submit`]: Submit; } & { [K_5 in `${Uncapitalize<T>}ViewAt`]: Date; } & { [K_6 in `${Uncapitalize<T>}Modal`]: string | null; } & { [K_7 in `${Uncapitalize<T>}Operation`]: "error" | "reset" | "sleep" | "idle" | "loading"; } & { [K_8 in `default${Capitalize<T>}`]: DefaultOf<Full>; } & { [K_9 in `${Uncapitalize<T>}List`]: DataList<Light>; } & { [K_10 in `${Uncapitalize<T>}ListLoading`]: boolean; } & { [K_11 in `${Uncapitalize<T>}InitList`]: DataList<Light>; } & { [K_12 in `${Uncapitalize<T>}InitAt`]: Date; } & { [K_13 in `${Uncapitalize<T>}Selection`]: DataList<Light>; } & { [K_14 in `${Uncapitalize<T>}Insight`]: Insight; } & { [K_15 in `lastPageOf${Capitalize<T>}`]: number; } & { [K_16 in `pageOf${Capitalize<T>}`]: number; } & { [K_17 in `limitOf${Capitalize<T>}`]: number; } & { [K_18 in `queryArgsOf${Capitalize<T>}`]: [query: QueryOf<DocumentModel<Full, Dayjs>>]; } & { [K_19 in `sortOf${Capitalize<T>}`]: Exclude<keyof { [K_20 in keyof Filter as Filter[K_20] extends (...args: any) => any ? never : K_20]: Filter[K_20]; }, "prototype">; } & UnionToIntersection<MergeFields<{ [K_21 in keyof Signal as K_21 extends `${T}List${infer Suffix}` ? K_21 : never]: K_21 extends `${T}List${infer Suffix_1}` ? Signal[K_21] extends (...args: infer Args) => Promise<Full[]> ? SliceState<T, Full, Light, import("@akanjs/signal").FilterOutInternalArgs<Args, []> extends infer T_2 ? T_2 extends import("@akanjs/signal").FilterOutInternalArgs<Args, []> ? T_2 extends [...infer Rest, any, any, any] ? Rest : T_2 : never : never, Insight, Filter, Suffix_1> : never : never; }>>>) => any)) => void;
|
|
197
|
-
readonly pick: PickState<GetState<Mutate<StoreApi<MakeState<State & { [K in Uncapitalize<T>]: Full | null; } & { [K_1 in `${Uncapitalize<T>}Loading`]: string | boolean; } & { [K_2 in `${Uncapitalize<T>}Form`]: DefaultOf<Full>; } & { [K_3 in `${Uncapitalize<T>}FormLoading`]: string | boolean; } & { [K_4 in `${Uncapitalize<T>}Submit`]: Submit; } & { [K_5 in `${Uncapitalize<T>}ViewAt`]: Date; } & { [K_6 in `${Uncapitalize<T>}Modal`]: string | null; } & { [K_7 in `${Uncapitalize<T>}Operation`]: "error" | "reset" | "sleep" | "idle" | "loading"; } & { [K_8 in `default${Capitalize<T>}`]: DefaultOf<Full>; } & { [K_9 in `${Uncapitalize<T>}List`]: DataList<Light>; } & { [K_10 in `${Uncapitalize<T>}ListLoading`]: boolean; } & { [K_11 in `${Uncapitalize<T>}InitList`]: DataList<Light>; } & { [K_12 in `${Uncapitalize<T>}InitAt`]: Date; } & { [K_13 in `${Uncapitalize<T>}Selection`]: DataList<Light>; } & { [K_14 in `${Uncapitalize<T>}Insight`]: Insight; } & { [K_15 in `lastPageOf${Capitalize<T>}`]: number; } & { [K_16 in `pageOf${Capitalize<T>}`]: number; } & { [K_17 in `limitOf${Capitalize<T>}`]: number; } & { [K_18 in `queryArgsOf${Capitalize<T>}`]: [query: QueryOf<DocumentModel<Full, Dayjs>>]; } & { [K_19 in `sortOf${Capitalize<T>}`]: Exclude<keyof { [K_20 in keyof Filter as Filter[K_20] extends (...args: any) => any ? never : K_20]: Filter[K_20]; }, "prototype">; } & UnionToIntersection<MergeFields<{ [K_21 in keyof Signal as K_21 extends `${T}List${infer Suffix}` ? K_21 : never]: K_21 extends `${T}List${infer Suffix_1}` ? Signal[K_21] extends (...args: infer Args) => Promise<Full[]> ? SliceState<T, Full, Light, import("@akanjs/signal").FilterOutInternalArgs<Args, []> extends infer T_1 ? T_1 extends import("@akanjs/signal").FilterOutInternalArgs<Args, []> ? T_1 extends [...infer Rest, any, any, any] ? Rest : T_1 : never : never, Insight, Filter, Suffix_1> : never : never; }>>>>, []>, "getState">>;
|
|
198
|
-
} & (State & { [K in Uncapitalize<T>]: Full | null; } & { [K_1 in `${Uncapitalize<T>}Loading`]: string | boolean; } & { [K_2 in `${Uncapitalize<T>}Form`]: DefaultOf<Full>; } & { [K_3 in `${Uncapitalize<T>}FormLoading`]: string | boolean; } & { [K_4 in `${Uncapitalize<T>}Submit`]: Submit; } & { [K_5 in `${Uncapitalize<T>}ViewAt`]: Date; } & { [K_6 in `${Uncapitalize<T>}Modal`]: string | null; } & { [K_7 in `${Uncapitalize<T>}Operation`]: "error" | "reset" | "sleep" | "idle" | "loading"; } & { [K_8 in `default${Capitalize<T>}`]: DefaultOf<Full>; } & { [K_9 in `${Uncapitalize<T>}List`]: DataList<Light>; } & { [K_10 in `${Uncapitalize<T>}ListLoading`]: boolean; } & { [K_11 in `${Uncapitalize<T>}InitList`]: DataList<Light>; } & { [K_12 in `${Uncapitalize<T>}InitAt`]: Date; } & { [K_13 in `${Uncapitalize<T>}Selection`]: DataList<Light>; } & { [K_14 in `${Uncapitalize<T>}Insight`]: Insight; } & { [K_15 in `lastPageOf${Capitalize<T>}`]: number; } & { [K_16 in `pageOf${Capitalize<T>}`]: number; } & { [K_17 in `limitOf${Capitalize<T>}`]: number; } & { [K_18 in `queryArgsOf${Capitalize<T>}`]: [query: QueryOf<DocumentModel<Full, Dayjs>>]; } & { [K_19 in `sortOf${Capitalize<T>}`]: Exclude<keyof { [K_20 in keyof Filter as Filter[K_20] extends (...args: any) => any ? never : K_20]: Filter[K_20]; }, "prototype">; } & UnionToIntersection<MergeFields<{ [K_21 in keyof Signal as K_21 extends `${T}List${infer Suffix}` ? K_21 : never]: K_21 extends `${T}List${infer Suffix_1}` ? Signal[K_21] extends (...args: infer Args) => Promise<Full[]> ? SliceState<T, Full, Light, import("@akanjs/signal").FilterOutInternalArgs<Args, []> extends infer T_2 ? T_2 extends import("@akanjs/signal").FilterOutInternalArgs<Args, []> ? T_2 extends [...infer Rest, any, any, any] ? Rest : T_2 : never : never, Insight, Filter, Suffix_1> : never : never; }>>) & DefaultActions<T, Input, Full, Light, Filter, Fetch, Signal> & { [K_22 in keyof Fetch as K_22 extends `${T}List${infer Suffix_2}` ? `__SLICE__${T}${Suffix_2}` : never]: K_22 extends `${T}List${infer Suffix_3}` ? Fetch[K_22] extends (...args: [...args: infer QueryArgs, skip: null | undefined, limit: null | undefined, sort: null | undefined, option?: FetchPolicy]) => Promise<Light[]> ? StoreOf<T, RemoveSuffix<{ [K_23 in `default${Capitalize<T>}${Suffix_3}`]: DefaultOf<Full>; } & { [K_24 in `${Uncapitalize<T>}List${Suffix_3}`]: DataList<Light>; } & { [K_25 in `${Uncapitalize<T>}ListLoading${Suffix_3}`]: boolean; } & { [K_26 in `${Uncapitalize<T>}InitList${Suffix_3}`]: DataList<Light>; } & { [K_27 in `${Uncapitalize<T>}InitAt${Suffix_3}`]: Date; } & { [K_28 in `${Uncapitalize<T>}Selection${Suffix_3}`]: DataList<Light>; } & { [K_29 in `${Uncapitalize<T>}Insight${Suffix_3}`]: Insight; } & { [K_30 in `lastPageOf${Capitalize<T>}${Suffix_3}`]: number; } & { [K_31 in `pageOf${Capitalize<T>}${Suffix_3}`]: number; } & { [K_32 in `limitOf${Capitalize<T>}${Suffix_3}`]: number; } & { [K_33 in `queryArgsOf${Capitalize<T>}${Suffix_3}`]: QueryArgs; } & { [K_34 in `sortOf${Capitalize<T>}${Suffix_3}`]: Exclude<keyof { [K_20 in keyof Filter as Filter[K_20] extends (...args: any) => any ? never : K_20]: Filter[K_20]; }, "prototype">; } & { [K_35 in `init${Capitalize<T>}${Suffix_3}`]: (...args: [...args: QueryArgs, initForm?: (FetchInitForm<Input, Full, Filter> & FetchPolicy<any>) | undefined]) => Promise<void>; } & { [K_36 in `refresh${Capitalize<T>}${Suffix_3}`]: (...args: [...args: QueryArgs, initForm?: (FetchInitForm<Input, Full, Filter> & FetchPolicy<any>) | undefined]) => Promise<void>; } & { [K_37 in `select${Capitalize<T>}${Suffix_3}`]: (model: Light | Light[], options?: {
|
|
199
|
-
refresh?: boolean;
|
|
200
|
-
remove?: boolean;
|
|
201
|
-
}) => void; } & { [K_38 in `setPageOf${Capitalize<T>}${Suffix_3}`]: (page: number, options?: FetchPolicy) => Promise<void>; } & { [K_39 in `addPageOf${Capitalize<T>}${Suffix_3}`]: (page: number, options?: FetchPolicy) => Promise<void>; } & { [K_40 in `setLimitOf${Capitalize<T>}${Suffix_3}`]: (limit: number, options?: FetchPolicy) => Promise<void>; } & { [K_41 in `setQueryArgsOf${Capitalize<T>}${Suffix_3}`]: (...args: [...args: QueryArgs, options?: FetchPolicy<any> | undefined]) => Promise<void>; } & { [K_42 in `setSortOf${Capitalize<T>}${Suffix_3}`]: (sort: Exclude<keyof { [K_20 in keyof Filter as Filter[K_20] extends (...args: any) => any ? never : K_20]: Filter[K_20]; }, "prototype">, options?: FetchPolicy) => Promise<void>; }, Suffix_3>> : never : never; }>;
|
|
202
|
-
export declare const scalarStateOf: <T extends string, State extends {
|
|
215
|
+
}, _CapitalizedT extends string = Capitalize<T>, _Default = DefaultOf<Full>, _DefaultInput = DefaultOf<Input>, _DefaultState = GetStateObject<Full>, _DefaultStateInput = GetStateObject<Input>, _Doc = DocumentModel<Full>, _DocInput = DocumentModel<Input>, _QueryOfDoc = QueryOf<DocumentModel<Full>>, _Query = GetActionObject<Filter>, _Sort = SortOf<Filter>, _DynamicSliceArgMap = DynamicSliceArgMap<T, Input, Full, Filter, Signal, _CapitalizedT, _DefaultInput, _Sort>, _CreateOption = CreateOption<Full>, _FetchInitFormWithFetchPolicy = FetchInitForm<Input, Full, Filter> & FetchPolicy, _DefaultSliceState = SliceState<T, Full, Light, [query: _QueryOfDoc], Insight, Filter, _CapitalizedT, _Default, _Sort>, _DynamicSliceStateMap = { [Suffix in keyof _DynamicSliceArgMap as Suffix extends string ? Suffix : never]: Suffix extends string ? SliceState<T, Full, Light, _DynamicSliceArgMap[Suffix], Insight, Filter, _CapitalizedT, _Default, _Sort> : never; }, _DefaultSliceAction = SliceAction<T, Input, Full, Light, [query: _QueryOfDoc], Filter, _CapitalizedT, _Sort, _FetchInitFormWithFetchPolicy>, _DynamicSliceActionMap = { [Suffix in keyof _DynamicSliceArgMap as Suffix extends string ? Suffix : never]: Suffix extends string ? _DynamicSliceArgMap[Suffix] extends any[] ? SliceAction<T, Input, Full, Light, _DynamicSliceArgMap[Suffix], Filter, _CapitalizedT, _Sort, _FetchInitFormWithFetchPolicy> : never : never; }, _ApplyState = State & DefaultState<T, Input, Full, Light, Insight, Filter, Signal, _CapitalizedT, _Default, _DefaultInput, _DefaultState, _DefaultStateInput, _Doc, _DocInput, _QueryOfDoc, _Query, _Sort, _DynamicSliceArgMap, _DefaultSliceState, _DynamicSliceStateMap>, _ApplyAction = DefaultActions<T, Input, Full, Light, Filter, Fetch, Signal, _CapitalizedT, _Default, _DefaultInput, _DefaultState, _DefaultStateInput, _Doc, _DocInput, _QueryOfDoc, _Sort, _DynamicSliceArgMap, _CreateOption, _FetchInitFormWithFetchPolicy, _DefaultSliceAction, _DynamicSliceActionMap>, _SliceInfoMap = { [K in T]: SliceInfo<T, _DefaultSliceState, _DefaultSliceAction>; } & { [Suffix in keyof _DynamicSliceStateMap & keyof _DynamicSliceActionMap as Suffix extends string ? `${T}${Suffix}` : never]: Suffix extends string ? SliceInfo<`${T}${Suffix}`, _DynamicSliceStateMap[Suffix], _DynamicSliceActionMap[Suffix]> : never; }>(gql: DbGraphQL<T, Input, Full, Light, Insight, Filter, Fetch, Signal, _CapitalizedT, _Default, _DefaultInput, _DefaultState, _DefaultStateInput, _Doc, _DocInput, _QueryOfDoc, _Query, _Sort, _DynamicSliceArgMap>, state: State) => Type<StoreInstance<_ApplyState, _ApplyAction, _SliceInfoMap>>;
|
|
216
|
+
export declare const scalarStateOf: <State extends {
|
|
203
217
|
[key: string]: any;
|
|
204
|
-
}>(refName: string, state: State) => Type<{
|
|
205
|
-
readonly get: () => State;
|
|
206
|
-
readonly set: (state: Partial<MakeState<State>> | ((state: MakeState<State>) => any)) => void;
|
|
207
|
-
readonly pick: PickState<GetState<Mutate<StoreApi<MakeState<State>>, []>, "getState">>;
|
|
208
|
-
} & State>;
|
|
218
|
+
}>(refName: string, state: State) => Type<StoreInstance<State, {}, {}>>;
|
|
209
219
|
interface StoreDecoratorInput {
|
|
210
220
|
name: string;
|
|
211
221
|
}
|
|
212
222
|
export declare const Store: (returnsOrObj: (() => Type) | StoreDecoratorInput) => (target: Type) => void;
|
|
213
223
|
type SetKey<T extends string> = `set${Capitalize<T>}`;
|
|
214
|
-
export interface WithSelectors<
|
|
224
|
+
export interface WithSelectors<State, Action, SliceInfoMap> {
|
|
215
225
|
sub: {
|
|
216
|
-
(listener: (selectedState:
|
|
217
|
-
<U>(selector: (state:
|
|
226
|
+
(listener: (selectedState: State, previousSelectedState: State) => void): () => void;
|
|
227
|
+
<U>(selector: (state: State) => U, listener: (selectedState: U, previousSelectedState: U) => void, options?: {
|
|
218
228
|
equalityFn?: (a: U, b: U) => boolean;
|
|
219
229
|
fireImmediately?: boolean;
|
|
220
230
|
}): () => void;
|
|
221
231
|
};
|
|
222
|
-
ref: <U>(selector: (state:
|
|
223
|
-
sel: <U>(selector: (state:
|
|
232
|
+
ref: <U>(selector: (state: State) => U) => RefObject<U>;
|
|
233
|
+
sel: <U>(selector: (state: State) => U, equals?: (a: U, b: U) => boolean) => U;
|
|
224
234
|
use: {
|
|
225
|
-
[K in keyof
|
|
235
|
+
[K in keyof State]: () => State[K];
|
|
226
236
|
};
|
|
227
|
-
do:
|
|
228
|
-
[K in keyof
|
|
237
|
+
do: {
|
|
238
|
+
[K in Exclude<keyof Action, "__SLICE_INFO__" | "__STATE_INFO__">]: Action[K];
|
|
229
239
|
} & {
|
|
230
|
-
[K in keyof
|
|
231
|
-
}
|
|
232
|
-
get: () =>
|
|
233
|
-
set: (state: Partial<
|
|
240
|
+
[K in keyof State as K extends string ? SetKey<K> : never]: (value: FieldState<State[K]>) => void;
|
|
241
|
+
};
|
|
242
|
+
get: () => State;
|
|
243
|
+
set: (state: Partial<State> | ((state: State) => any)) => void;
|
|
234
244
|
slice: {
|
|
235
|
-
[K in keyof
|
|
245
|
+
[K in keyof SliceInfoMap]: SliceInfoMap[K] extends SliceInfo<infer T, infer State, infer Action> ? SliceSelectors<T, State, Action> : never;
|
|
236
246
|
};
|
|
237
247
|
}
|
|
238
|
-
interface
|
|
239
|
-
|
|
240
|
-
}
|
|
241
|
-
export declare const makeStore: <BaseStore extends WithSelectors<any>, SA extends {
|
|
242
|
-
[key: string]: any;
|
|
243
|
-
}>(st: BaseStore, storeRef: Type<SA>, { library }?: MakeStoreOption) => WithSelectors<SA> & BaseStore;
|
|
244
|
-
export type StoreOf<T extends string, State> = SliceMeta & {
|
|
248
|
+
export interface SliceSelectors<T extends string, State, Action> {
|
|
249
|
+
refName: T;
|
|
245
250
|
use: {
|
|
246
|
-
[K in keyof State
|
|
251
|
+
[K in keyof State]: () => State[K];
|
|
247
252
|
};
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
[K in keyof State as State[K] extends (...args: any) => any ? K : never]: State[K];
|
|
253
|
+
do: Prettify<{
|
|
254
|
+
[K in keyof Action]: Action[K];
|
|
251
255
|
} & {
|
|
252
|
-
[K in keyof State as
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
export declare const MixStore: <
|
|
261
|
-
export declare const rootStoreOf: <
|
|
256
|
+
[K in keyof State as K extends string ? SetKey<K> : never]: (value: FieldState<State[K]>) => void;
|
|
257
|
+
}>;
|
|
258
|
+
get: () => State;
|
|
259
|
+
}
|
|
260
|
+
interface MakeStoreOption {
|
|
261
|
+
library?: boolean;
|
|
262
|
+
}
|
|
263
|
+
export declare const makeStore: <State, Action, SliceInfoMap>(st: WithSelectors<any, any, any>, storeRef: Type<StoreInstance<State, Action, SliceInfoMap>>, { library }?: MakeStoreOption) => WithSelectors<State, Action, SliceInfoMap>;
|
|
264
|
+
export declare const MixStore: <T extends Type[]>(...stores: [...T]) => Type<StoreInstance<Prettify<MergeAllKeyOfTypes<T, "__STATE_INFO__">>, MergeAllTypes<T, "get" | "set" | "pick" | "__STATE_INFO__" | "__SLICE_INFO__">, Prettify<MergeAllKeyOfTypes<T, "__SLICE_INFO__">>>>;
|
|
265
|
+
export declare const rootStoreOf: <State, Action, SliceInfoMap>(store: Type<StoreInstance<State, Action, SliceInfoMap>>) => Type<StoreInstance<State, Action, SliceInfoMap>>;
|
|
262
266
|
interface ToastProps {
|
|
263
267
|
root?: string;
|
|
264
268
|
duration?: number;
|