as-model 0.2.9 → 0.3.1
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/index.d.ts +133 -125
- package/package.json +1 -1
package/index.d.ts
CHANGED
|
@@ -27,10 +27,18 @@ declare type ValidInstance<S, T extends ModelInstance> = {
|
|
|
27
27
|
: T[K];
|
|
28
28
|
};
|
|
29
29
|
|
|
30
|
-
export declare type Model<S, T extends ModelInstance> = (
|
|
30
|
+
export declare type Model<S = any, T extends ModelInstance = any> = (
|
|
31
31
|
state: S
|
|
32
32
|
) => ValidInstance<S, T>;
|
|
33
33
|
|
|
34
|
+
export type PickState<R extends Model> = R extends (state: infer S) => any
|
|
35
|
+
? S
|
|
36
|
+
: never;
|
|
37
|
+
|
|
38
|
+
export type Instance<R extends Model> = R extends (state: any) => infer T
|
|
39
|
+
? T
|
|
40
|
+
: never;
|
|
41
|
+
|
|
34
42
|
export declare type Action<S = any, T extends ModelInstance = ModelInstance> = {
|
|
35
43
|
type: null | string;
|
|
36
44
|
method: null | ((...args: any[]) => any);
|
|
@@ -49,22 +57,18 @@ export interface Token {
|
|
|
49
57
|
export declare type Dispatch = (action: Action) => any;
|
|
50
58
|
|
|
51
59
|
export declare interface Key<
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
selector: R;
|
|
60
|
+
M extends Model = any,
|
|
61
|
+
R extends undefined | ((instance: () => Instance<M>) => any) = undefined
|
|
62
|
+
> extends M {
|
|
63
|
+
(s: PickState<M>): Instance<M>;
|
|
64
|
+
source: M;
|
|
65
|
+
wrapper: R;
|
|
59
66
|
modelKeyIdentifier: () => boolean;
|
|
60
67
|
[k: string]: any;
|
|
61
|
-
defaultState?:
|
|
68
|
+
defaultState?: PickState<M>;
|
|
62
69
|
}
|
|
63
70
|
|
|
64
|
-
declare interface UpdaterStore<
|
|
65
|
-
S = any,
|
|
66
|
-
T extends ModelInstance = ModelInstance
|
|
67
|
-
> {
|
|
71
|
+
declare interface UpdaterStore<S = any, T extends ModelInstance = any> {
|
|
68
72
|
getState: () => { state: S; instance: T };
|
|
69
73
|
dispatch: (action: Action) => void;
|
|
70
74
|
}
|
|
@@ -85,114 +89,110 @@ export declare interface Config {
|
|
|
85
89
|
/** createStore * */
|
|
86
90
|
|
|
87
91
|
export declare interface StoreIndex<
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
R extends (instance: () => T) => any = (instance: () => T) => T
|
|
92
|
+
M extends Model,
|
|
93
|
+
R extends undefined | ((instance: () => Instance<M>) => any) = undefined
|
|
91
94
|
> {
|
|
92
|
-
key: Key<
|
|
95
|
+
key: Key<M, R>;
|
|
93
96
|
}
|
|
94
97
|
|
|
95
98
|
export declare interface Store<
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
> extends StoreIndex<S, T, R> {
|
|
99
|
+
M extends Model,
|
|
100
|
+
R extends undefined | ((instance: () => Instance<M>) => any) = undefined
|
|
101
|
+
> extends StoreIndex<M, R> {
|
|
100
102
|
subscribe: (dispatcher: Dispatch) => () => void;
|
|
101
103
|
getToken: () => Token;
|
|
102
|
-
getInstance: () =>
|
|
103
|
-
|
|
104
|
+
getInstance: () => R extends undefined
|
|
105
|
+
? Instance<M>
|
|
106
|
+
: ReturnType<R extends undefined ? never : R>;
|
|
107
|
+
getStoreInstance: () => Instance<M>;
|
|
104
108
|
update: (args?: {
|
|
105
|
-
model?:
|
|
106
|
-
key?: Key<
|
|
107
|
-
initialState?:
|
|
108
|
-
state?:
|
|
109
|
+
model?: M;
|
|
110
|
+
key?: Key<M, R>;
|
|
111
|
+
initialState?: PickState<M>;
|
|
112
|
+
state?: PickState<M>;
|
|
109
113
|
}) => void;
|
|
110
114
|
destroy: () => void;
|
|
111
115
|
payload: <P>(
|
|
112
116
|
callback?: (payload: P | undefined) => P | undefined
|
|
113
117
|
) => P | undefined;
|
|
114
118
|
isDestroyed: () => boolean;
|
|
115
|
-
extends: <E extends Record<string, any>>(e: E) => Store<
|
|
119
|
+
extends: <E extends Record<string, any>>(e: E) => Store<M, R> & E;
|
|
116
120
|
}
|
|
117
121
|
|
|
118
122
|
export declare function createStore<
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
>(
|
|
124
|
-
model: Model<S, T> | Key<S, T, R> | ModelUsage<S, T, Model<S, T>, R>,
|
|
125
|
-
state?: D
|
|
126
|
-
): Store<S, T, R>;
|
|
123
|
+
M extends Model,
|
|
124
|
+
D extends PickState<M>,
|
|
125
|
+
R extends undefined | ((instance: () => Instance<M>) => any) = undefined
|
|
126
|
+
>(model: M | Key<M, R> | ModelUsage<M, R>, state?: D): Store<M, R>;
|
|
127
127
|
|
|
128
128
|
/** createKey * */
|
|
129
129
|
|
|
130
130
|
export declare interface ModelKey<
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
extends: <E extends Record<string, any>>(e: E) => ModelKey<S, T, R> & E;
|
|
131
|
+
M extends Model = any,
|
|
132
|
+
R extends undefined | ((instance: () => Instance<M>) => any) = undefined
|
|
133
|
+
> extends Key<M, R> {
|
|
134
|
+
(s: PickState<M>): Instance<M>;
|
|
135
|
+
createStore: <D extends PickState<M>>(initialState?: D) => Store<M, R>;
|
|
136
|
+
extends: <E extends Record<string, any>>(e: E) => ModelKey<M, R> & E;
|
|
138
137
|
}
|
|
139
138
|
|
|
140
139
|
export declare function createKey<
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
>(
|
|
146
|
-
model: Model<S, T> | ModelUsage<S, T, Model<S, T>, R>,
|
|
147
|
-
state?: D
|
|
148
|
-
): ModelKey<S, T, R>;
|
|
140
|
+
M extends Model = any,
|
|
141
|
+
D extends PickState<M>,
|
|
142
|
+
R extends undefined | ((instance: () => Instance<M>) => any) = undefined
|
|
143
|
+
>(model: M | ModelUsage<M, R>, initialState?: D): ModelKey<M, R>;
|
|
149
144
|
|
|
150
145
|
/** createStores * */
|
|
151
146
|
|
|
152
147
|
export declare interface StoreCollection {
|
|
153
148
|
find: <
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
R extends (instance: () => T) => any = (instance: () => T) => T
|
|
149
|
+
M extends Model = any,
|
|
150
|
+
R extends undefined | ((instance: () => Instance<M>) => any) = undefined
|
|
157
151
|
>(
|
|
158
|
-
key: Key<
|
|
159
|
-
) => Store<
|
|
160
|
-
update: (...keys: (ModelKey | StoreIndex)[]) => void;
|
|
152
|
+
key: Key<M, R> | StoreIndex<M, R>
|
|
153
|
+
) => Store<M, R> | null;
|
|
154
|
+
update: (...keys: (ModelKey<any, any> | StoreIndex<any, any>)[]) => void;
|
|
161
155
|
keys: () => Key[];
|
|
162
156
|
destroy: () => void;
|
|
163
157
|
}
|
|
164
158
|
|
|
165
159
|
export declare function createStores(
|
|
166
|
-
...modelKeys: (ModelKey | StoreIndex)[]
|
|
160
|
+
...modelKeys: (ModelKey<any, any> | StoreIndex<any, any>)[]
|
|
167
161
|
): StoreCollection;
|
|
168
162
|
|
|
169
163
|
/** model API * */
|
|
170
164
|
|
|
171
165
|
export declare type ModelUsage<
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
M extends Model<S, T>,
|
|
175
|
-
R extends (instance: () => T) => any = (instance: () => T) => T
|
|
166
|
+
M extends Model,
|
|
167
|
+
R extends undefined | ((instance: () => Instance<M>) => any) = undefined
|
|
176
168
|
> = M & {
|
|
177
|
-
createKey: <D extends
|
|
178
|
-
createStore: <D extends
|
|
179
|
-
produce: <
|
|
169
|
+
createKey: <D extends PickState<M>>(state?: D) => ModelKey<M, R>;
|
|
170
|
+
createStore: <D extends PickState<M>>(state?: D) => Store<M, R>;
|
|
171
|
+
produce: <
|
|
172
|
+
C extends (instance: () => Instance<M>) => any = (
|
|
173
|
+
instance: () => Instance<M>
|
|
174
|
+
) => Instance<M>
|
|
175
|
+
>(
|
|
180
176
|
s: C
|
|
181
|
-
) => ModelUsage<
|
|
177
|
+
) => ModelUsage<M, C>;
|
|
182
178
|
wrapper: R;
|
|
183
|
-
extends: <E extends Record<string, any>>(e: E) => ModelUsage<
|
|
179
|
+
extends: <E extends Record<string, any>>(e: E) => ModelUsage<M, R> & E;
|
|
184
180
|
};
|
|
185
181
|
|
|
186
182
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
187
183
|
export declare interface model {
|
|
184
|
+
<M extends Model>(modelFn: M): ModelUsage<M, undefined>;
|
|
185
|
+
<M extends Model, R extends (instance: () => Instance<M>) => any>(
|
|
186
|
+
modelFn: M,
|
|
187
|
+
s: R
|
|
188
|
+
): ModelUsage<M, R>;
|
|
188
189
|
<
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
R extends (instance: () => T) => any = (instance: () => T) => T
|
|
190
|
+
M extends Model,
|
|
191
|
+
R extends undefined | ((instance: () => Instance<M>) => any) = undefined
|
|
192
192
|
>(
|
|
193
|
-
modelFn:
|
|
193
|
+
modelFn: M,
|
|
194
194
|
s?: R
|
|
195
|
-
): ModelUsage<
|
|
195
|
+
): ModelUsage<M, R>;
|
|
196
196
|
createField: <P extends () => any>(
|
|
197
197
|
callback: P,
|
|
198
198
|
deps?: any[]
|
|
@@ -210,51 +210,66 @@ export interface SignalOptions {
|
|
|
210
210
|
|
|
211
211
|
// eslint-disable-next-line @typescript-eslint/no-redeclare
|
|
212
212
|
declare interface SignalStore<
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
> extends StoreIndex<S, T, R> {
|
|
213
|
+
M extends Model = any,
|
|
214
|
+
R extends undefined | ((instance: () => Instance<M>) => any) = undefined
|
|
215
|
+
> extends StoreIndex<M, R> {
|
|
217
216
|
getToken: () => Token;
|
|
218
217
|
subscribe: (dispatcher: Dispatch) => () => void;
|
|
219
218
|
getSignal: () => {
|
|
220
|
-
(
|
|
219
|
+
(
|
|
220
|
+
options?: SignalOptions
|
|
221
|
+
): R extends undefined
|
|
222
|
+
? Instance<M>
|
|
223
|
+
: ReturnType<R extends undefined ? never : R>;
|
|
221
224
|
startStatistics: () => void;
|
|
222
225
|
stopStatistics: () => void;
|
|
223
226
|
subscribe: (dispatcher: Dispatch) => () => void;
|
|
224
|
-
store: Store<
|
|
227
|
+
store: Store<M, R>;
|
|
225
228
|
};
|
|
226
229
|
}
|
|
227
230
|
|
|
228
231
|
export declare function createSignal<
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
>(store: Store<S, T, R>): SignalStore<S, T, R>;
|
|
232
|
+
M extends Model = any,
|
|
233
|
+
R extends undefined | ((instance: () => Instance<M>) => any) = undefined
|
|
234
|
+
>(store: Store<M, R>): SignalStore<M, R>;
|
|
233
235
|
|
|
234
236
|
/** createSelector * */
|
|
235
237
|
|
|
236
238
|
declare type SelectMethod<
|
|
237
239
|
T extends ModelInstance = any,
|
|
238
|
-
R extends (instance: () => T) => any =
|
|
240
|
+
R extends undefined | ((instance: () => T) => any) = undefined
|
|
239
241
|
> = {
|
|
240
|
-
(): ReturnType<R>;
|
|
241
|
-
<
|
|
242
|
+
(): R extends undefined ? T : ReturnType<R extends undefined ? never : R>;
|
|
243
|
+
<
|
|
244
|
+
C extends (
|
|
245
|
+
instance: () => R extends undefined
|
|
246
|
+
? T
|
|
247
|
+
: ReturnType<R extends undefined ? never : R>
|
|
248
|
+
) => any
|
|
249
|
+
>(
|
|
242
250
|
selector: C
|
|
243
251
|
): ReturnType<C>;
|
|
244
|
-
<
|
|
252
|
+
<
|
|
253
|
+
C extends (
|
|
254
|
+
instance: () => R extends undefined
|
|
255
|
+
? T
|
|
256
|
+
: ReturnType<R extends undefined ? never : R>
|
|
257
|
+
) => any
|
|
258
|
+
>(
|
|
245
259
|
selector?: C
|
|
246
|
-
):
|
|
260
|
+
):
|
|
261
|
+
| (R extends undefined ? T : ReturnType<R extends undefined ? never : R>)
|
|
262
|
+
| ReturnType<C>;
|
|
247
263
|
};
|
|
248
264
|
|
|
249
265
|
// eslint-disable-next-line @typescript-eslint/no-redeclare
|
|
250
266
|
declare interface SelectorStore<
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
> extends StoreIndex<S, T, R> {
|
|
267
|
+
M extends Model = any,
|
|
268
|
+
R extends undefined | ((instance: () => Instance<M>) => any) = undefined
|
|
269
|
+
> extends StoreIndex<M, R> {
|
|
255
270
|
getToken: () => Token;
|
|
256
271
|
subscribe: (dispatcher: Dispatch) => () => void;
|
|
257
|
-
select: SelectMethod<
|
|
272
|
+
select: SelectMethod<Instance<M>, R>;
|
|
258
273
|
}
|
|
259
274
|
|
|
260
275
|
declare interface SelectorOption<T = any> {
|
|
@@ -262,31 +277,28 @@ declare interface SelectorOption<T = any> {
|
|
|
262
277
|
}
|
|
263
278
|
|
|
264
279
|
export declare function createSelector<
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
>(store: Store<S, T, R>, opts?: SelectorOption): SelectorStore<S, T, R>;
|
|
280
|
+
M extends Model = any,
|
|
281
|
+
R extends undefined | ((instance: () => Instance<M>) => any) = undefined
|
|
282
|
+
>(store: Store<M, R>, opts?: SelectorOption): SelectorStore<M, R>;
|
|
269
283
|
|
|
270
284
|
/** config * */
|
|
271
285
|
export declare function config(configuration: Config): {
|
|
272
286
|
createStore: <
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
R extends (instance: () => T) => any = (instance: () => T) => T
|
|
287
|
+
M extends Model,
|
|
288
|
+
D extends PickState<M>,
|
|
289
|
+
R extends undefined | ((instance: () => Instance<M>) => any) = undefined
|
|
277
290
|
>(
|
|
278
|
-
|
|
291
|
+
modelLike: M | Key<M, R> | ModelUsage<M, R>,
|
|
279
292
|
state?: D
|
|
280
|
-
) => Store<
|
|
293
|
+
) => Store<M, R>;
|
|
281
294
|
createKey: <
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
R extends (instance: () => T) => any = (instance: () => T) => T
|
|
295
|
+
M extends Model,
|
|
296
|
+
D extends PickState<M>,
|
|
297
|
+
R extends undefined | ((instance: () => Instance<M>) => any) = undefined
|
|
286
298
|
>(
|
|
287
|
-
|
|
299
|
+
modelLike: M | ModelUsage<M, R>,
|
|
288
300
|
state?: D
|
|
289
|
-
) => ModelKey<
|
|
301
|
+
) => ModelKey<M, R>;
|
|
290
302
|
createStores: (...modelKeys: (ModelKey | StoreIndex)[]) => StoreCollection;
|
|
291
303
|
model: model;
|
|
292
304
|
};
|
|
@@ -295,33 +307,29 @@ export declare function config(configuration: Config): {
|
|
|
295
307
|
export declare const validations: {
|
|
296
308
|
isInstanceFromNoStateModel: (instance: any) => boolean;
|
|
297
309
|
isModelKey: <
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
R extends (ins: () => T) => any = (ins: () => T) => T
|
|
310
|
+
M extends Model,
|
|
311
|
+
R extends undefined | ((instance: () => Instance<M>) => any) = undefined
|
|
301
312
|
>(
|
|
302
313
|
data: any
|
|
303
|
-
) => data is ModelKey<
|
|
314
|
+
) => data is ModelKey<M, R>;
|
|
304
315
|
isModelStore: <
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
R extends (ins: () => T) => any = (ins: () => T) => T
|
|
316
|
+
M extends Model,
|
|
317
|
+
R extends undefined | ((instance: () => Instance<M>) => any) = undefined
|
|
308
318
|
>(
|
|
309
319
|
data: any
|
|
310
|
-
) => data is Store<
|
|
320
|
+
) => data is Store<M, R>;
|
|
311
321
|
isModelUsage: <
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
R extends (ins: () => T) => any = (ins: () => T) => T
|
|
322
|
+
M extends Model,
|
|
323
|
+
R extends undefined | ((instance: () => Instance<M>) => any) = undefined
|
|
315
324
|
>(
|
|
316
|
-
data:
|
|
317
|
-
) => data is ModelUsage<
|
|
325
|
+
data: M
|
|
326
|
+
) => data is ModelUsage<typeof data, R>;
|
|
318
327
|
isStoreIndex: <
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
R extends (ins: () => T) => any = (ins: () => T) => T
|
|
328
|
+
M extends Model,
|
|
329
|
+
R extends undefined | ((instance: () => Instance<M>) => any) = undefined
|
|
322
330
|
>(
|
|
323
331
|
data: any
|
|
324
|
-
) => data is StoreIndex<
|
|
332
|
+
) => data is StoreIndex<M, R>;
|
|
325
333
|
};
|
|
326
334
|
|
|
327
335
|
/** tools * */
|