as-model 0.1.20 → 0.1.22
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/dist/index.js +11 -6
- package/esm/store/index.js +2 -2
- package/esm/updater/index.js +12 -4
- package/index.d.ts +311 -310
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -604,10 +604,14 @@
|
|
|
604
604
|
updater.mutate(function(u, effect) {
|
|
605
605
|
var _args_model;
|
|
606
606
|
var model2 = (_args_model = args.model) !== null && _args_model !== void 0 ? _args_model : u.model;
|
|
607
|
-
var
|
|
607
|
+
var hasState = Object.prototype.hasOwnProperty.call(args, "state");
|
|
608
|
+
var hasInitialState = Object.prototype.hasOwnProperty.call(args, "initialState");
|
|
609
|
+
var state = hasState ? args.state : u.state;
|
|
610
|
+
var isInitialize = !u.initialized || hasInitialState;
|
|
608
611
|
var token = createToken();
|
|
609
612
|
if (u.controlled) {
|
|
610
|
-
var
|
|
613
|
+
var controlledState = hasInitialState && !hasState ? args.initialState : state;
|
|
614
|
+
var instance = model2(controlledState);
|
|
611
615
|
return _object_spread_props(_object_spread({}, u), {
|
|
612
616
|
state,
|
|
613
617
|
instance,
|
|
@@ -620,8 +624,9 @@
|
|
|
620
624
|
if (!u.initialized && !("state" in args)) {
|
|
621
625
|
throw new Error("The updater has not been initialized, it should be updated with a state for initializing.");
|
|
622
626
|
}
|
|
623
|
-
if (
|
|
624
|
-
var
|
|
627
|
+
if (isInitialize) {
|
|
628
|
+
var initialState = hasInitialState ? args.initialState : state;
|
|
629
|
+
var instance1 = model2(initialState);
|
|
625
630
|
var initializedUpdater = createInitializedUpdater(u, middleWare);
|
|
626
631
|
return _object_spread(_object_spread_props(_object_spread({}, u), {
|
|
627
632
|
model: model2,
|
|
@@ -1194,7 +1199,7 @@
|
|
|
1194
1199
|
getInstance,
|
|
1195
1200
|
update: function update(args) {
|
|
1196
1201
|
var updateArgs = args !== null && args !== void 0 ? args : {};
|
|
1197
|
-
if (
|
|
1202
|
+
if (updateArgs.key) {
|
|
1198
1203
|
var updatingKey = updateArgs.key, updatingModel = updateArgs.model, rest = _object_without_properties(updateArgs, [
|
|
1199
1204
|
"key",
|
|
1200
1205
|
"model"
|
|
@@ -1205,7 +1210,7 @@
|
|
|
1205
1210
|
store.key = updatingKey;
|
|
1206
1211
|
return;
|
|
1207
1212
|
}
|
|
1208
|
-
if (
|
|
1213
|
+
if (updateArgs.model) {
|
|
1209
1214
|
var updatingKey1 = updateArgs.key, updatingModel1 = updateArgs.model, rest1 = _object_without_properties(updateArgs, [
|
|
1210
1215
|
"key",
|
|
1211
1216
|
"model"
|
package/esm/store/index.js
CHANGED
|
@@ -103,13 +103,13 @@ function createStore(modelLike, config = {}) {
|
|
|
103
103
|
getInstance,
|
|
104
104
|
update(args) {
|
|
105
105
|
const updateArgs = args != null ? args : {};
|
|
106
|
-
if (
|
|
106
|
+
if (updateArgs.key) {
|
|
107
107
|
const _a = updateArgs, { key: updatingKey, model: updatingModel } = _a, rest = __objRest(_a, ["key", "model"]);
|
|
108
108
|
updater.update(__spreadProps(__spreadValues({}, rest), { model: updatingKey.source }));
|
|
109
109
|
store.key = updatingKey;
|
|
110
110
|
return;
|
|
111
111
|
}
|
|
112
|
-
if (
|
|
112
|
+
if (updateArgs.model) {
|
|
113
113
|
const _b = updateArgs, { key: updatingKey, model: updatingModel } = _b, rest = __objRest(_b, ["key", "model"]);
|
|
114
114
|
updater.update(__spreadProps(__spreadValues({}, rest), { model: updatingModel }));
|
|
115
115
|
store.key = createPrimaryKey(updatingModel, config);
|
package/esm/updater/index.js
CHANGED
|
@@ -37,10 +37,17 @@ function createUpdateFn(updater, middleWare) {
|
|
|
37
37
|
updater.mutate((u, effect) => {
|
|
38
38
|
var _a;
|
|
39
39
|
const model = (_a = args.model) != null ? _a : u.model;
|
|
40
|
-
const
|
|
40
|
+
const hasState = Object.prototype.hasOwnProperty.call(args, "state");
|
|
41
|
+
const hasInitialState = Object.prototype.hasOwnProperty.call(
|
|
42
|
+
args,
|
|
43
|
+
"initialState"
|
|
44
|
+
);
|
|
45
|
+
const state = hasState ? args.state : u.state;
|
|
46
|
+
const isInitialize = !u.initialized || hasInitialState;
|
|
41
47
|
const token = createToken();
|
|
42
48
|
if (u.controlled) {
|
|
43
|
-
const
|
|
49
|
+
const controlledState = hasInitialState && !hasState ? args.initialState : state;
|
|
50
|
+
const instance = model(controlledState);
|
|
44
51
|
return __spreadProps(__spreadValues({}, u), { state, instance, model });
|
|
45
52
|
}
|
|
46
53
|
if (u.isDestroyed) {
|
|
@@ -51,8 +58,9 @@ function createUpdateFn(updater, middleWare) {
|
|
|
51
58
|
"The updater has not been initialized, it should be updated with a state for initializing."
|
|
52
59
|
);
|
|
53
60
|
}
|
|
54
|
-
if (
|
|
55
|
-
const
|
|
61
|
+
if (isInitialize) {
|
|
62
|
+
const initialState = hasInitialState ? args.initialState : state;
|
|
63
|
+
const instance = model(initialState);
|
|
56
64
|
const initializedUpdater = createInitializedUpdater(u, middleWare);
|
|
57
65
|
return __spreadValues(__spreadProps(__spreadValues({}, u), {
|
|
58
66
|
model,
|
package/index.d.ts
CHANGED
|
@@ -1,310 +1,311 @@
|
|
|
1
|
-
declare interface ModelInstance {
|
|
2
|
-
[key: string]: any;
|
|
3
|
-
[key: number]: any;
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
export declare type FieldStructure<R = any> = {
|
|
7
|
-
callback: () => R;
|
|
8
|
-
deps: any[] | undefined;
|
|
9
|
-
identifier: (d: any) => d is FieldStructure<R>;
|
|
10
|
-
value: R;
|
|
11
|
-
get: () => R;
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
export declare type MethodStructure<
|
|
15
|
-
R extends (...args: any[]) => any = (...args: any[]) => any
|
|
16
|
-
> = R & {
|
|
17
|
-
identifier: (d: any) => d is MethodStructure;
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
declare type ValidInstance<S, T extends ModelInstance> = {
|
|
21
|
-
[K in keyof T]: T[K] extends
|
|
22
|
-
| ((...args: any[]) => S)
|
|
23
|
-
| (((...args: any[]) => any) & { identifier: (d: any) => boolean })
|
|
24
|
-
? T[K]
|
|
25
|
-
: T[K] extends (...args: any[]) => any
|
|
26
|
-
? never
|
|
27
|
-
: T[K];
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
export declare type Model<S, T extends ModelInstance> = (
|
|
31
|
-
state: S
|
|
32
|
-
) => ValidInstance<S, T>;
|
|
33
|
-
|
|
34
|
-
export declare type Action<S = any, T extends ModelInstance = ModelInstance> = {
|
|
35
|
-
type: null | string;
|
|
36
|
-
method: null | ((...args: any[]) => any);
|
|
37
|
-
params?: any[];
|
|
38
|
-
state: S;
|
|
39
|
-
prevState?: S;
|
|
40
|
-
instance: T;
|
|
41
|
-
prevInstance?: T;
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
export interface Token {
|
|
45
|
-
isDifferent: (token: Token) => boolean;
|
|
46
|
-
value: unknown;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
export declare type Dispatch = (action: Action) => any;
|
|
50
|
-
|
|
51
|
-
export declare interface Key<
|
|
52
|
-
S = any,
|
|
53
|
-
T extends ModelInstance = any,
|
|
54
|
-
R extends (instance: () => T) => any = (instance: () => T) => T
|
|
55
|
-
> extends Model<S, T> {
|
|
56
|
-
(s: S): T;
|
|
57
|
-
source: Model<S, T>;
|
|
58
|
-
selector: R;
|
|
59
|
-
modelKeyIdentifier: () => boolean;
|
|
60
|
-
[k: string]: any;
|
|
61
|
-
defaultState?: S;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
declare interface UpdaterStore<
|
|
65
|
-
S = any,
|
|
66
|
-
T extends ModelInstance = ModelInstance
|
|
67
|
-
> {
|
|
68
|
-
getState: () => { state: S; instance: T };
|
|
69
|
-
dispatch: (action: Action) => void;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
export declare type MiddleWare = (
|
|
73
|
-
store: UpdaterStore
|
|
74
|
-
) => (next: Dispatch) => (action: Action) => void;
|
|
75
|
-
|
|
76
|
-
export declare interface Config {
|
|
77
|
-
middleWares?: MiddleWare[];
|
|
78
|
-
controlled?: boolean;
|
|
79
|
-
notify?: (
|
|
80
|
-
notifier: (action: Action) => { errors: any[] | undefined },
|
|
81
|
-
action: Action
|
|
82
|
-
) => any;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
/** createStore * */
|
|
86
|
-
|
|
87
|
-
export declare interface StoreIndex<
|
|
88
|
-
S = any,
|
|
89
|
-
T extends ModelInstance = any,
|
|
90
|
-
R extends (instance: () => T) => any = (instance: () => T) => T
|
|
91
|
-
> {
|
|
92
|
-
key: Key<S, T, R>;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
export declare interface Store<
|
|
96
|
-
S = any,
|
|
97
|
-
T extends ModelInstance = any,
|
|
98
|
-
R extends (instance: () => T) => any = (instance: () => T) => T
|
|
99
|
-
> extends StoreIndex<S, T, R> {
|
|
100
|
-
subscribe: (dispatcher: Dispatch) => () => void;
|
|
101
|
-
getToken: () => Token;
|
|
102
|
-
getInstance: () => T;
|
|
103
|
-
update: (args?: {
|
|
104
|
-
model?: Model<S, T>;
|
|
105
|
-
key?: Key<S, T, R>;
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
keys: () =>
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
<C extends (instance: () => T) => any>(
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
1
|
+
declare interface ModelInstance {
|
|
2
|
+
[key: string]: any;
|
|
3
|
+
[key: number]: any;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
export declare type FieldStructure<R = any> = {
|
|
7
|
+
callback: () => R;
|
|
8
|
+
deps: any[] | undefined;
|
|
9
|
+
identifier: (d: any) => d is FieldStructure<R>;
|
|
10
|
+
value: R;
|
|
11
|
+
get: () => R;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export declare type MethodStructure<
|
|
15
|
+
R extends (...args: any[]) => any = (...args: any[]) => any
|
|
16
|
+
> = R & {
|
|
17
|
+
identifier: (d: any) => d is MethodStructure;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
declare type ValidInstance<S, T extends ModelInstance> = {
|
|
21
|
+
[K in keyof T]: T[K] extends
|
|
22
|
+
| ((...args: any[]) => S)
|
|
23
|
+
| (((...args: any[]) => any) & { identifier: (d: any) => boolean })
|
|
24
|
+
? T[K]
|
|
25
|
+
: T[K] extends (...args: any[]) => any
|
|
26
|
+
? never
|
|
27
|
+
: T[K];
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export declare type Model<S, T extends ModelInstance> = (
|
|
31
|
+
state: S
|
|
32
|
+
) => ValidInstance<S, T>;
|
|
33
|
+
|
|
34
|
+
export declare type Action<S = any, T extends ModelInstance = ModelInstance> = {
|
|
35
|
+
type: null | string;
|
|
36
|
+
method: null | ((...args: any[]) => any);
|
|
37
|
+
params?: any[];
|
|
38
|
+
state: S;
|
|
39
|
+
prevState?: S;
|
|
40
|
+
instance: T;
|
|
41
|
+
prevInstance?: T;
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
export interface Token {
|
|
45
|
+
isDifferent: (token: Token) => boolean;
|
|
46
|
+
value: unknown;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export declare type Dispatch = (action: Action) => any;
|
|
50
|
+
|
|
51
|
+
export declare interface Key<
|
|
52
|
+
S = any,
|
|
53
|
+
T extends ModelInstance = any,
|
|
54
|
+
R extends (instance: () => T) => any = (instance: () => T) => T
|
|
55
|
+
> extends Model<S, T> {
|
|
56
|
+
(s: S): T;
|
|
57
|
+
source: Model<S, T>;
|
|
58
|
+
selector: R;
|
|
59
|
+
modelKeyIdentifier: () => boolean;
|
|
60
|
+
[k: string]: any;
|
|
61
|
+
defaultState?: S;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
declare interface UpdaterStore<
|
|
65
|
+
S = any,
|
|
66
|
+
T extends ModelInstance = ModelInstance
|
|
67
|
+
> {
|
|
68
|
+
getState: () => { state: S; instance: T };
|
|
69
|
+
dispatch: (action: Action) => void;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export declare type MiddleWare = (
|
|
73
|
+
store: UpdaterStore
|
|
74
|
+
) => (next: Dispatch) => (action: Action) => void;
|
|
75
|
+
|
|
76
|
+
export declare interface Config {
|
|
77
|
+
middleWares?: MiddleWare[];
|
|
78
|
+
controlled?: boolean;
|
|
79
|
+
notify?: (
|
|
80
|
+
notifier: (action: Action) => { errors: any[] | undefined },
|
|
81
|
+
action: Action
|
|
82
|
+
) => any;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/** createStore * */
|
|
86
|
+
|
|
87
|
+
export declare interface StoreIndex<
|
|
88
|
+
S = any,
|
|
89
|
+
T extends ModelInstance = any,
|
|
90
|
+
R extends (instance: () => T) => any = (instance: () => T) => T
|
|
91
|
+
> {
|
|
92
|
+
key: Key<S, T, R>;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export declare interface Store<
|
|
96
|
+
S = any,
|
|
97
|
+
T extends ModelInstance = any,
|
|
98
|
+
R extends (instance: () => T) => any = (instance: () => T) => T
|
|
99
|
+
> extends StoreIndex<S, T, R> {
|
|
100
|
+
subscribe: (dispatcher: Dispatch) => () => void;
|
|
101
|
+
getToken: () => Token;
|
|
102
|
+
getInstance: () => T;
|
|
103
|
+
update: (args?: {
|
|
104
|
+
model?: Model<S, T>;
|
|
105
|
+
key?: Key<S, T, R>;
|
|
106
|
+
initialState?: S;
|
|
107
|
+
state?: S;
|
|
108
|
+
}) => void;
|
|
109
|
+
destroy: () => void;
|
|
110
|
+
payload: <P>(
|
|
111
|
+
callback?: (payload: P | undefined) => P | undefined
|
|
112
|
+
) => P | undefined;
|
|
113
|
+
isDestroyed: () => boolean;
|
|
114
|
+
extends: <E extends Record<string, any>>(e: E) => Store<S, T, R> & E;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
export declare function createStore<
|
|
118
|
+
S,
|
|
119
|
+
T extends ModelInstance,
|
|
120
|
+
D extends S,
|
|
121
|
+
R extends (instance: () => T) => any = (instance: () => T) => T
|
|
122
|
+
>(
|
|
123
|
+
model: Model<S, T> | Key<S, T, R> | ModelUsage<S, T, R>,
|
|
124
|
+
state?: D
|
|
125
|
+
): Store<S, T, R>;
|
|
126
|
+
|
|
127
|
+
/** createKey * */
|
|
128
|
+
|
|
129
|
+
export declare interface ModelKey<
|
|
130
|
+
S = any,
|
|
131
|
+
T extends ModelInstance = any,
|
|
132
|
+
R extends (instance: () => T) => any = (instance: () => T) => T
|
|
133
|
+
> extends Key<S, T, R> {
|
|
134
|
+
(s: S): T;
|
|
135
|
+
createStore: <D extends S>(state?: D) => Store<S, T, R>;
|
|
136
|
+
extends: <E extends Record<string, any>>(e: E) => ModelKey<S, T, R> & E;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
export declare function createKey<
|
|
140
|
+
S,
|
|
141
|
+
T extends ModelInstance,
|
|
142
|
+
D extends S,
|
|
143
|
+
R extends (instance: () => T) => any = (instance: () => T) => T
|
|
144
|
+
>(model: Model<S, T> | ModelUsage<S, T, R>, state?: D): ModelKey<S, T, R>;
|
|
145
|
+
|
|
146
|
+
/** createStores * */
|
|
147
|
+
|
|
148
|
+
export declare interface StoreCollection {
|
|
149
|
+
find: <
|
|
150
|
+
S,
|
|
151
|
+
T extends ModelInstance,
|
|
152
|
+
R extends (instance: () => T) => any = (instance: () => T) => T
|
|
153
|
+
>(
|
|
154
|
+
key: Key<S, T, R> | StoreIndex<S, T, R>
|
|
155
|
+
) => Store<S, T, R> | null;
|
|
156
|
+
update: (...keys: (ModelKey | StoreIndex)[]) => void;
|
|
157
|
+
keys: () => Key[];
|
|
158
|
+
destroy: () => void;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
export declare function createStores(
|
|
162
|
+
...modelKeys: (ModelKey | StoreIndex)[]
|
|
163
|
+
): StoreCollection;
|
|
164
|
+
|
|
165
|
+
/** model API * */
|
|
166
|
+
|
|
167
|
+
export declare interface ModelUsage<
|
|
168
|
+
S,
|
|
169
|
+
T extends ModelInstance,
|
|
170
|
+
R extends (instance: () => T) => any = (instance: () => T) => T
|
|
171
|
+
> {
|
|
172
|
+
(s: S): ValidInstance<S, T>;
|
|
173
|
+
createKey: <D extends S>(state?: D) => ModelKey<S, T, R>;
|
|
174
|
+
createStore: <D extends S>(state?: D) => Store<S, T, R>;
|
|
175
|
+
select: <C extends (instance: () => T) => any = (instance: () => T) => T>(
|
|
176
|
+
s: C
|
|
177
|
+
) => ModelUsage<S, T, C>;
|
|
178
|
+
selector: R;
|
|
179
|
+
extends: <E extends Record<string, any>>(e: E) => ModelUsage<S, T, R> & E;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
183
|
+
export declare interface model {
|
|
184
|
+
<
|
|
185
|
+
S,
|
|
186
|
+
T extends ModelInstance,
|
|
187
|
+
R extends (instance: () => T) => any = (instance: () => T) => T
|
|
188
|
+
>(
|
|
189
|
+
modelFn: Model<S, T>,
|
|
190
|
+
s?: R
|
|
191
|
+
): ModelUsage<S, T, R>;
|
|
192
|
+
createField: <P extends () => any>(
|
|
193
|
+
callback: P,
|
|
194
|
+
deps?: any[]
|
|
195
|
+
) => FieldStructure<ReturnType<P>>;
|
|
196
|
+
createMethod: <P extends (...args: any[]) => any = (...args: any[]) => any>(
|
|
197
|
+
method: P
|
|
198
|
+
) => MethodStructure<P>;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/** createSignal * */
|
|
202
|
+
|
|
203
|
+
// eslint-disable-next-line @typescript-eslint/no-redeclare
|
|
204
|
+
declare interface SignalStore<
|
|
205
|
+
S = any,
|
|
206
|
+
T extends ModelInstance = any,
|
|
207
|
+
R extends (instance: () => T) => any = (instance: () => T) => any
|
|
208
|
+
> extends StoreIndex<S, T, R> {
|
|
209
|
+
getToken: () => Token;
|
|
210
|
+
subscribe: (dispatcher: Dispatch) => () => void;
|
|
211
|
+
getSignal: () => {
|
|
212
|
+
(): T;
|
|
213
|
+
startStatistics: () => void;
|
|
214
|
+
stopStatistics: () => void;
|
|
215
|
+
subscribe: (dispatcher: Dispatch) => () => void;
|
|
216
|
+
store: Store<S, T, R>;
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
export declare function createSignal<
|
|
221
|
+
S,
|
|
222
|
+
T extends ModelInstance,
|
|
223
|
+
R extends (instance: () => T) => any = (instance: () => T) => any
|
|
224
|
+
>(store: Store<S, T, R>): SignalStore<S, T, R>;
|
|
225
|
+
|
|
226
|
+
/** createSelector * */
|
|
227
|
+
|
|
228
|
+
declare type SelectMethod<
|
|
229
|
+
T extends ModelInstance = any,
|
|
230
|
+
R extends (instance: () => T) => any = (instance: () => T) => any
|
|
231
|
+
> = {
|
|
232
|
+
(): ReturnType<R>;
|
|
233
|
+
<C extends (instance: () => T) => any>(selector: C): ReturnType<C>;
|
|
234
|
+
<C extends (instance: () => T) => any>(
|
|
235
|
+
selector?: C
|
|
236
|
+
): ReturnType<R> | ReturnType<C>;
|
|
237
|
+
};
|
|
238
|
+
|
|
239
|
+
// eslint-disable-next-line @typescript-eslint/no-redeclare
|
|
240
|
+
declare interface SelectorStore<
|
|
241
|
+
S = any,
|
|
242
|
+
T extends ModelInstance = any,
|
|
243
|
+
R extends (instance: () => T) => any = (instance: () => T) => any
|
|
244
|
+
> extends StoreIndex<S, T, R> {
|
|
245
|
+
getToken: () => Token;
|
|
246
|
+
subscribe: (dispatcher: Dispatch) => () => void;
|
|
247
|
+
select: SelectMethod<T, R>;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
declare interface SelectorOption<T = any> {
|
|
251
|
+
equality?: (current: T, next: T) => boolean;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
export declare function createSelector<
|
|
255
|
+
S,
|
|
256
|
+
T extends ModelInstance,
|
|
257
|
+
R extends (instance: () => T) => any = (instance: () => T) => any
|
|
258
|
+
>(store: Store<S, T, R>, opts?: SelectorOption): SelectorStore<S, T, R>;
|
|
259
|
+
|
|
260
|
+
/** config * */
|
|
261
|
+
export declare function config(configuration: Config): {
|
|
262
|
+
createStore: <
|
|
263
|
+
S,
|
|
264
|
+
T extends ModelInstance,
|
|
265
|
+
D extends S,
|
|
266
|
+
R extends (instance: () => T) => any = (instance: () => T) => T
|
|
267
|
+
>(
|
|
268
|
+
model: Model<S, T> | Key<S, T, R> | ModelUsage<S, T, R>,
|
|
269
|
+
state?: D
|
|
270
|
+
) => Store<S, T, R>;
|
|
271
|
+
createKey: <
|
|
272
|
+
S,
|
|
273
|
+
T extends ModelInstance,
|
|
274
|
+
D extends S,
|
|
275
|
+
R extends (instance: () => T) => any = (instance: () => T) => T
|
|
276
|
+
>(
|
|
277
|
+
model: Model<S, T> | ModelUsage<S, T, R>,
|
|
278
|
+
state?: D
|
|
279
|
+
) => ModelKey<S, T, R>;
|
|
280
|
+
createStores: (...modelKeys: (ModelKey | StoreIndex)[]) => StoreCollection;
|
|
281
|
+
model: model;
|
|
282
|
+
};
|
|
283
|
+
|
|
284
|
+
/** validations * */
|
|
285
|
+
export declare const validations: {
|
|
286
|
+
isInstanceFromNoStateModel: (instance: any) => boolean;
|
|
287
|
+
isModelKey: <
|
|
288
|
+
S,
|
|
289
|
+
T extends ModelInstance,
|
|
290
|
+
R extends (ins: () => T) => any = (ins: () => T) => T
|
|
291
|
+
>(
|
|
292
|
+
data: any
|
|
293
|
+
) => data is ModelKey<S, T, R>;
|
|
294
|
+
isModelStore: <
|
|
295
|
+
S,
|
|
296
|
+
T extends ModelInstance,
|
|
297
|
+
R extends (ins: () => T) => any = (ins: () => T) => T
|
|
298
|
+
>(
|
|
299
|
+
data: any
|
|
300
|
+
) => data is Store<S, T, R>;
|
|
301
|
+
isModelUsage: <
|
|
302
|
+
S,
|
|
303
|
+
T extends ModelInstance,
|
|
304
|
+
R extends (ins: () => T) => any = (ins: () => T) => T
|
|
305
|
+
>(
|
|
306
|
+
data: any
|
|
307
|
+
) => data is ModelUsage<S, T, R>;
|
|
308
|
+
};
|
|
309
|
+
|
|
310
|
+
/** tools * */
|
|
311
|
+
export declare function shallowEqual(prev: any, current: any): boolean;
|