@esportsplus/reactivity 0.14.0 → 0.14.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/build/reactive/array.d.ts +22 -7
- package/package.json +1 -1
- package/src/reactive/array.ts +19 -17
|
@@ -1,12 +1,13 @@
|
|
|
1
|
+
import { Prettify } from '@esportsplus/utilities';
|
|
1
2
|
import { Infer } from '../types.js';
|
|
2
|
-
type API<T> = Infer<T
|
|
3
|
+
type API<T extends unknown[]> = Prettify<Infer<T> & {
|
|
3
4
|
clear: () => void;
|
|
4
5
|
dispose: () => void;
|
|
5
|
-
dispatch: <
|
|
6
|
-
map: <
|
|
7
|
-
on: <
|
|
8
|
-
once: <
|
|
9
|
-
}
|
|
6
|
+
dispatch: <K extends keyof Events<T>, V>(event: K, value?: V) => void;
|
|
7
|
+
map: <R>(this: API<T>, fn: (this: API<T>, value: T, i: number) => R, i?: number, n?: number) => R[];
|
|
8
|
+
on: <K extends keyof Events<T>>(event: K, listener: Listener<Events<T>[K]>) => void;
|
|
9
|
+
once: <K extends keyof Events<T>>(event: K, listener: Listener<Events<T>[K]>) => void;
|
|
10
|
+
}>;
|
|
10
11
|
type Events<T> = {
|
|
11
12
|
clear: undefined;
|
|
12
13
|
pop: {
|
|
@@ -37,6 +38,20 @@ type Listener<V> = {
|
|
|
37
38
|
once?: boolean;
|
|
38
39
|
(value: V): void;
|
|
39
40
|
};
|
|
40
|
-
declare const _default: <T>(data: T
|
|
41
|
+
declare const _default: <T extends unknown[]>(data: T) => Infer<T> & {
|
|
42
|
+
clear: () => void;
|
|
43
|
+
dispose: () => void;
|
|
44
|
+
dispatch: <K_1 extends keyof Events<T_2>, V>(event: K_1, value?: V | undefined) => void;
|
|
45
|
+
map: <R>(this: any, fn: (this: any, value: T, i: number) => R, i?: number, n?: number) => R[];
|
|
46
|
+
on: <K_1 extends keyof Events<T_2>>(event: K_1, listener: Listener<Events<T>[K_1]>) => void;
|
|
47
|
+
once: <K_1 extends keyof Events<T_2>>(event: K_1, listener: Listener<Events<T>[K_1]>) => void;
|
|
48
|
+
} extends infer T_1 ? { [K in keyof T_1]: (Infer<T> & {
|
|
49
|
+
clear: () => void;
|
|
50
|
+
dispose: () => void;
|
|
51
|
+
dispatch: <K_1 extends keyof Events<T_2>, V>(event: K_1, value?: V | undefined) => void;
|
|
52
|
+
map: <R>(this: any, fn: (this: any, value: T, i: number) => R, i?: number, n?: number) => R[];
|
|
53
|
+
on: <K_1 extends keyof Events<T_2>>(event: K_1, listener: Listener<Events<T>[K_1]>) => void;
|
|
54
|
+
once: <K_1 extends keyof Events<T_2>>(event: K_1, listener: Listener<Events<T>[K_1]>) => void;
|
|
55
|
+
})[K]; } : never;
|
|
41
56
|
export default _default;
|
|
42
57
|
export type { API as ReactiveArray };
|
package/package.json
CHANGED
package/src/reactive/array.ts
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
1
|
-
import { isNumber } from '@esportsplus/utilities';
|
|
1
|
+
import { isNumber, Prettify } from '@esportsplus/utilities';
|
|
2
2
|
import { REACTIVE_ARRAY } from '~/constants';
|
|
3
3
|
import { Infer } from '~/types';
|
|
4
4
|
import { isReactiveObject } from './object';
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
type API<T
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
7
|
+
type API<T extends unknown[]> = Prettify<
|
|
8
|
+
Infer<T> & {
|
|
9
|
+
clear: () => void;
|
|
10
|
+
dispose: () => void;
|
|
11
|
+
dispatch: <K extends keyof Events<T>, V>(event: K, value?: V) => void;
|
|
12
|
+
map: <R>(this: API<T>, fn: (this: API<T>, value: T, i: number) => R, i?: number, n?: number) => R[];
|
|
13
|
+
on: <K extends keyof Events<T>>(event: K, listener: Listener<Events<T>[K]>) => void;
|
|
14
|
+
once: <K extends keyof Events<T>>(event: K, listener: Listener<Events<T>[K]>) => void;
|
|
15
|
+
}
|
|
16
|
+
>;
|
|
15
17
|
|
|
16
18
|
type Events<T> = {
|
|
17
19
|
clear: undefined,
|
|
@@ -94,10 +96,10 @@ function dispose<T>(data: T[]) {
|
|
|
94
96
|
}
|
|
95
97
|
}
|
|
96
98
|
|
|
97
|
-
function map<T, R>(
|
|
98
|
-
data: T
|
|
99
|
+
function map<T extends unknown[], R>(
|
|
100
|
+
data: T,
|
|
99
101
|
proxy: API<T>,
|
|
100
|
-
fn: (this: API<T>, value: T, i: number) => R,
|
|
102
|
+
fn: (this: API<T>, value: T[number], i: number) => R,
|
|
101
103
|
i?: number,
|
|
102
104
|
n?: number
|
|
103
105
|
) {
|
|
@@ -184,12 +186,12 @@ function shift<T>(data: T[], listeners: Listeners) {
|
|
|
184
186
|
return item;
|
|
185
187
|
}
|
|
186
188
|
|
|
187
|
-
function sort<T>(data: T
|
|
189
|
+
function sort<T extends unknown[]>(data: T, listeners: Listeners, fn: (a: T[number], b: T[number]) => number) {
|
|
188
190
|
data.sort((a, b) => fn(a, b));
|
|
189
191
|
dispatch(listeners, 'sort');
|
|
190
192
|
}
|
|
191
193
|
|
|
192
|
-
function splice<T>(data: T
|
|
194
|
+
function splice<T extends unknown[]>(data: T, listeners: Listeners, start: number, deleteCount: number = data.length, items: T[] = []) {
|
|
193
195
|
let removed = data.splice(start, deleteCount, ...items);
|
|
194
196
|
|
|
195
197
|
if (items.length > 0 || removed.length > 0) {
|
|
@@ -216,7 +218,7 @@ function unshift<T>(data: T[], listeners: Listeners, items: T[]) {
|
|
|
216
218
|
}
|
|
217
219
|
|
|
218
220
|
|
|
219
|
-
export default <T>(data: T
|
|
221
|
+
export default <T extends unknown[]>(data: T) => {
|
|
220
222
|
let listeners: Listeners = {},
|
|
221
223
|
proxy = new Proxy({}, {
|
|
222
224
|
get(_, key: any) {
|
|
@@ -269,7 +271,7 @@ export default <T>(data: T[]) => {
|
|
|
269
271
|
return proxy;
|
|
270
272
|
},
|
|
271
273
|
map: <R>(
|
|
272
|
-
fn: (this: API<T>, value: T, i: number) => R,
|
|
274
|
+
fn: (this: API<T>, value: T[number], i: number) => R,
|
|
273
275
|
i?: number,
|
|
274
276
|
n?: number
|
|
275
277
|
) => {
|
|
@@ -290,7 +292,7 @@ export default <T>(data: T[]) => {
|
|
|
290
292
|
return proxy;
|
|
291
293
|
},
|
|
292
294
|
shift: () => shift(data, listeners),
|
|
293
|
-
sort: (fn: (a: T, b: T) => number) => {
|
|
295
|
+
sort: (fn: (a: T[number], b: T[number]) => number) => {
|
|
294
296
|
sort(data, listeners, fn);
|
|
295
297
|
return proxy;
|
|
296
298
|
},
|