@esportsplus/reactivity 0.14.1 → 0.14.3
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 +149 -19
- package/package.json +1 -1
- package/src/reactive/array.ts +16 -16
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { Prettify } from '@esportsplus/utilities';
|
|
2
2
|
import { Infer } from '../types.js';
|
|
3
|
-
type
|
|
3
|
+
type ReactiveArray<T extends unknown[]> = Prettify<Infer<T> & {
|
|
4
4
|
clear: () => void;
|
|
5
5
|
dispose: () => void;
|
|
6
|
-
dispatch: <K extends keyof Events<T>, V>(event: K, value?: V) => void;
|
|
7
|
-
map: <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;
|
|
6
|
+
dispatch: <K extends keyof Events<T[number]>, V>(event: K, value?: V) => void;
|
|
7
|
+
map: <R>(fn: (this: ReactiveArray<T>, value: T[number], i: number) => R, i?: number, n?: number) => R[];
|
|
8
|
+
on: <K extends keyof Events<T[number]>>(event: K, listener: Listener<Events<T[number]>[K]>) => void;
|
|
9
|
+
once: <K extends keyof Events<T[number]>>(event: K, listener: Listener<Events<T[number]>[K]>) => void;
|
|
10
10
|
}>;
|
|
11
11
|
type Events<T> = {
|
|
12
12
|
clear: undefined;
|
|
@@ -38,20 +38,150 @@ type Listener<V> = {
|
|
|
38
38
|
once?: boolean;
|
|
39
39
|
(value: V): void;
|
|
40
40
|
};
|
|
41
|
-
declare const _default: <T
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
}
|
|
41
|
+
declare const _default: <T>(data: T[]) => {
|
|
42
|
+
[x: number]: Infer<T>;
|
|
43
|
+
length: number;
|
|
44
|
+
toString: () => string;
|
|
45
|
+
toLocaleString: {
|
|
46
|
+
(): string;
|
|
47
|
+
(locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string;
|
|
48
|
+
};
|
|
49
|
+
pop: () => Infer<T> | undefined;
|
|
50
|
+
push: (...items: Infer<T>[]) => number;
|
|
51
|
+
concat: {
|
|
52
|
+
(...items: ConcatArray<Infer<T>>[]): Infer<T>[];
|
|
53
|
+
(...items: (Infer<T> | ConcatArray<Infer<T>>)[]): Infer<T>[];
|
|
54
|
+
};
|
|
55
|
+
join: (separator?: string) => string;
|
|
56
|
+
reverse: () => Infer<T>[];
|
|
57
|
+
shift: () => Infer<T> | undefined;
|
|
58
|
+
slice: (start?: number, end?: number) => Infer<T>[];
|
|
59
|
+
sort: (compareFn?: ((a: Infer<T>, b: Infer<T>) => number) | undefined) => Infer<T>[] & {
|
|
60
|
+
clear: () => void;
|
|
61
|
+
dispose: () => void;
|
|
62
|
+
dispatch: <K extends keyof Events<T_1[number]>, V>(event: K, value?: V | undefined) => void;
|
|
63
|
+
map: <R>(fn: (this: any, value: T, i: number) => R, i?: number, n?: number) => R[];
|
|
64
|
+
on: <K extends keyof Events<T_1[number]>>(event: K, listener: Listener<Events<T>[K]>) => void;
|
|
65
|
+
once: <K extends keyof Events<T_1[number]>>(event: K, listener: Listener<Events<T>[K]>) => void;
|
|
66
|
+
};
|
|
67
|
+
splice: {
|
|
68
|
+
(start: number, deleteCount?: number): Infer<T>[];
|
|
69
|
+
(start: number, deleteCount: number, ...items: Infer<T>[]): Infer<T>[];
|
|
70
|
+
};
|
|
71
|
+
unshift: (...items: Infer<T>[]) => number;
|
|
72
|
+
indexOf: (searchElement: Infer<T>, fromIndex?: number) => number;
|
|
73
|
+
lastIndexOf: (searchElement: Infer<T>, fromIndex?: number) => number;
|
|
74
|
+
every: {
|
|
75
|
+
<S extends Infer<T>>(predicate: (value: Infer<T>, index: number, array: Infer<T>[]) => value is S, thisArg?: any): this is S[];
|
|
76
|
+
(predicate: (value: Infer<T>, index: number, array: Infer<T>[]) => unknown, thisArg?: any): boolean;
|
|
77
|
+
};
|
|
78
|
+
some: (predicate: (value: Infer<T>, index: number, array: Infer<T>[]) => unknown, thisArg?: any) => boolean;
|
|
79
|
+
forEach: (callbackfn: (value: Infer<T>, index: number, array: Infer<T>[]) => void, thisArg?: any) => void;
|
|
80
|
+
map: (<U>(callbackfn: (value: Infer<T>, index: number, array: Infer<T>[]) => U, thisArg?: any) => U[]) & (<R>(fn: (this: any, value: T, i: number) => R, i?: number, n?: number) => R[]);
|
|
81
|
+
filter: {
|
|
82
|
+
<S extends Infer<T>>(predicate: (value: Infer<T>, index: number, array: Infer<T>[]) => value is S, thisArg?: any): S[];
|
|
83
|
+
(predicate: (value: Infer<T>, index: number, array: Infer<T>[]) => unknown, thisArg?: any): Infer<T>[];
|
|
84
|
+
};
|
|
85
|
+
reduce: {
|
|
86
|
+
(callbackfn: (previousValue: Infer<T>, currentValue: Infer<T>, currentIndex: number, array: Infer<T>[]) => Infer<T>): Infer<T>;
|
|
87
|
+
(callbackfn: (previousValue: Infer<T>, currentValue: Infer<T>, currentIndex: number, array: Infer<T>[]) => Infer<T>, initialValue: Infer<T>): Infer<T>;
|
|
88
|
+
<U>(callbackfn: (previousValue: U, currentValue: Infer<T>, currentIndex: number, array: Infer<T>[]) => U, initialValue: U): U;
|
|
89
|
+
};
|
|
90
|
+
reduceRight: {
|
|
91
|
+
(callbackfn: (previousValue: Infer<T>, currentValue: Infer<T>, currentIndex: number, array: Infer<T>[]) => Infer<T>): Infer<T>;
|
|
92
|
+
(callbackfn: (previousValue: Infer<T>, currentValue: Infer<T>, currentIndex: number, array: Infer<T>[]) => Infer<T>, initialValue: Infer<T>): Infer<T>;
|
|
93
|
+
<U>(callbackfn: (previousValue: U, currentValue: Infer<T>, currentIndex: number, array: Infer<T>[]) => U, initialValue: U): U;
|
|
94
|
+
};
|
|
95
|
+
find: {
|
|
96
|
+
<S extends Infer<T>>(predicate: (value: Infer<T>, index: number, obj: Infer<T>[]) => value is S, thisArg?: any): S | undefined;
|
|
97
|
+
(predicate: (value: Infer<T>, index: number, obj: Infer<T>[]) => unknown, thisArg?: any): Infer<T> | undefined;
|
|
98
|
+
};
|
|
99
|
+
findIndex: (predicate: (value: Infer<T>, index: number, obj: Infer<T>[]) => unknown, thisArg?: any) => number;
|
|
100
|
+
fill: (value: Infer<T>, start?: number, end?: number) => Infer<T>[] & {
|
|
101
|
+
clear: () => void;
|
|
102
|
+
dispose: () => void;
|
|
103
|
+
dispatch: <K extends keyof Events<T_1[number]>, V>(event: K, value?: V | undefined) => void;
|
|
104
|
+
map: <R>(fn: (this: any, value: T, i: number) => R, i?: number, n?: number) => R[];
|
|
105
|
+
on: <K extends keyof Events<T_1[number]>>(event: K, listener: Listener<Events<T>[K]>) => void;
|
|
106
|
+
once: <K extends keyof Events<T_1[number]>>(event: K, listener: Listener<Events<T>[K]>) => void;
|
|
107
|
+
};
|
|
108
|
+
copyWithin: (target: number, start: number, end?: number) => Infer<T>[] & {
|
|
109
|
+
clear: () => void;
|
|
110
|
+
dispose: () => void;
|
|
111
|
+
dispatch: <K extends keyof Events<T_1[number]>, V>(event: K, value?: V | undefined) => void;
|
|
112
|
+
map: <R>(fn: (this: any, value: T, i: number) => R, i?: number, n?: number) => R[];
|
|
113
|
+
on: <K extends keyof Events<T_1[number]>>(event: K, listener: Listener<Events<T>[K]>) => void;
|
|
114
|
+
once: <K extends keyof Events<T_1[number]>>(event: K, listener: Listener<Events<T>[K]>) => void;
|
|
115
|
+
};
|
|
116
|
+
entries: () => ArrayIterator<[number, Infer<T>]>;
|
|
117
|
+
keys: () => ArrayIterator<number>;
|
|
118
|
+
values: () => ArrayIterator<Infer<T>>;
|
|
119
|
+
includes: (searchElement: Infer<T>, fromIndex?: number) => boolean;
|
|
120
|
+
flatMap: <U, This = undefined>(callback: (this: This, value: Infer<T>, index: number, array: Infer<T>[]) => U | readonly U[], thisArg?: This | undefined) => U[];
|
|
121
|
+
flat: <A, D extends number = 1>(this: A, depth?: D | undefined) => FlatArray<A, D>[];
|
|
122
|
+
at: (index: number) => Infer<T> | undefined;
|
|
123
|
+
findLast: {
|
|
124
|
+
<S extends Infer<T>>(predicate: (value: Infer<T>, index: number, array: Infer<T>[]) => value is S, thisArg?: any): S | undefined;
|
|
125
|
+
(predicate: (value: Infer<T>, index: number, array: Infer<T>[]) => unknown, thisArg?: any): Infer<T> | undefined;
|
|
126
|
+
};
|
|
127
|
+
findLastIndex: (predicate: (value: Infer<T>, index: number, array: Infer<T>[]) => unknown, thisArg?: any) => number;
|
|
128
|
+
toReversed: () => Infer<T>[];
|
|
129
|
+
toSorted: (compareFn?: ((a: Infer<T>, b: Infer<T>) => number) | undefined) => Infer<T>[];
|
|
130
|
+
toSpliced: {
|
|
131
|
+
(start: number, deleteCount: number, ...items: Infer<T>[]): Infer<T>[];
|
|
132
|
+
(start: number, deleteCount?: number): Infer<T>[];
|
|
133
|
+
};
|
|
134
|
+
with: (index: number, value: Infer<T>) => Infer<T>[];
|
|
135
|
+
[Symbol.iterator]: () => ArrayIterator<Infer<T>>;
|
|
136
|
+
readonly [Symbol.unscopables]: {
|
|
137
|
+
[x: number]: boolean | undefined;
|
|
138
|
+
length?: boolean | undefined;
|
|
139
|
+
toString?: boolean | undefined;
|
|
140
|
+
toLocaleString?: boolean | undefined;
|
|
141
|
+
pop?: boolean | undefined;
|
|
142
|
+
push?: boolean | undefined;
|
|
143
|
+
concat?: boolean | undefined;
|
|
144
|
+
join?: boolean | undefined;
|
|
145
|
+
reverse?: boolean | undefined;
|
|
146
|
+
shift?: boolean | undefined;
|
|
147
|
+
slice?: boolean | undefined;
|
|
148
|
+
sort?: boolean | undefined;
|
|
149
|
+
splice?: boolean | undefined;
|
|
150
|
+
unshift?: boolean | undefined;
|
|
151
|
+
indexOf?: boolean | undefined;
|
|
152
|
+
lastIndexOf?: boolean | undefined;
|
|
153
|
+
every?: boolean | undefined;
|
|
154
|
+
some?: boolean | undefined;
|
|
155
|
+
forEach?: boolean | undefined;
|
|
156
|
+
map?: boolean | undefined;
|
|
157
|
+
filter?: boolean | undefined;
|
|
158
|
+
reduce?: boolean | undefined;
|
|
159
|
+
reduceRight?: boolean | undefined;
|
|
160
|
+
find?: boolean | undefined;
|
|
161
|
+
findIndex?: boolean | undefined;
|
|
162
|
+
fill?: boolean | undefined;
|
|
163
|
+
copyWithin?: boolean | undefined;
|
|
164
|
+
entries?: boolean | undefined;
|
|
165
|
+
keys?: boolean | undefined;
|
|
166
|
+
values?: boolean | undefined;
|
|
167
|
+
includes?: boolean | undefined;
|
|
168
|
+
flatMap?: boolean | undefined;
|
|
169
|
+
flat?: boolean | undefined;
|
|
170
|
+
at?: boolean | undefined;
|
|
171
|
+
findLast?: boolean | undefined;
|
|
172
|
+
findLastIndex?: boolean | undefined;
|
|
173
|
+
toReversed?: boolean | undefined;
|
|
174
|
+
toSorted?: boolean | undefined;
|
|
175
|
+
toSpliced?: boolean | undefined;
|
|
176
|
+
with?: boolean | undefined;
|
|
177
|
+
[Symbol.iterator]?: boolean | undefined;
|
|
178
|
+
readonly [Symbol.unscopables]?: boolean | undefined;
|
|
179
|
+
};
|
|
49
180
|
clear: () => void;
|
|
50
181
|
dispose: () => void;
|
|
51
|
-
dispatch: <
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
})[K]; } : never;
|
|
182
|
+
dispatch: <K extends keyof Events<T_1[number]>, V>(event: K, value?: V | undefined) => void;
|
|
183
|
+
on: <K extends keyof Events<T_1[number]>>(event: K, listener: Listener<Events<T>[K]>) => void;
|
|
184
|
+
once: <K extends keyof Events<T_1[number]>>(event: K, listener: Listener<Events<T>[K]>) => void;
|
|
185
|
+
};
|
|
56
186
|
export default _default;
|
|
57
|
-
export type {
|
|
187
|
+
export type { ReactiveArray };
|
package/package.json
CHANGED
package/src/reactive/array.ts
CHANGED
|
@@ -4,14 +4,14 @@ import { Infer } from '~/types';
|
|
|
4
4
|
import { isReactiveObject } from './object';
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
type
|
|
7
|
+
type ReactiveArray<T extends unknown[]> = Prettify<
|
|
8
8
|
Infer<T> & {
|
|
9
9
|
clear: () => void;
|
|
10
10
|
dispose: () => void;
|
|
11
|
-
dispatch: <K extends keyof Events<T>, V>(event: K, value?: V) => void;
|
|
12
|
-
map: <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;
|
|
11
|
+
dispatch: <K extends keyof Events<T[number]>, V>(event: K, value?: V) => void;
|
|
12
|
+
map: <R>(fn: (this: ReactiveArray<T>, value: T[number], i: number) => R, i?: number, n?: number) => R[];
|
|
13
|
+
on: <K extends keyof Events<T[number]>>(event: K, listener: Listener<Events<T[number]>[K]>) => void;
|
|
14
|
+
once: <K extends keyof Events<T[number]>>(event: K, listener: Listener<Events<T[number]>[K]>) => void;
|
|
15
15
|
}
|
|
16
16
|
>;
|
|
17
17
|
|
|
@@ -96,10 +96,10 @@ function dispose<T>(data: T[]) {
|
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
98
|
|
|
99
|
-
function map<T
|
|
100
|
-
data: T,
|
|
101
|
-
proxy:
|
|
102
|
-
fn: (this:
|
|
99
|
+
function map<T, R>(
|
|
100
|
+
data: T[],
|
|
101
|
+
proxy: ReactiveArray<typeof data>,
|
|
102
|
+
fn: (this: ReactiveArray<typeof data>, value: T, i: number) => R,
|
|
103
103
|
i?: number,
|
|
104
104
|
n?: number
|
|
105
105
|
) {
|
|
@@ -186,12 +186,12 @@ function shift<T>(data: T[], listeners: Listeners) {
|
|
|
186
186
|
return item;
|
|
187
187
|
}
|
|
188
188
|
|
|
189
|
-
function sort<T
|
|
189
|
+
function sort<T>(data: T[], listeners: Listeners, fn: (a: T, b: T) => number) {
|
|
190
190
|
data.sort((a, b) => fn(a, b));
|
|
191
191
|
dispatch(listeners, 'sort');
|
|
192
192
|
}
|
|
193
193
|
|
|
194
|
-
function splice<T
|
|
194
|
+
function splice<T>(data: T[], listeners: Listeners, start: number, deleteCount: number = data.length, items: T[] = []) {
|
|
195
195
|
let removed = data.splice(start, deleteCount, ...items);
|
|
196
196
|
|
|
197
197
|
if (items.length > 0 || removed.length > 0) {
|
|
@@ -218,7 +218,7 @@ function unshift<T>(data: T[], listeners: Listeners, items: T[]) {
|
|
|
218
218
|
}
|
|
219
219
|
|
|
220
220
|
|
|
221
|
-
export default <T
|
|
221
|
+
export default <T>(data: T[]) => {
|
|
222
222
|
let listeners: Listeners = {},
|
|
223
223
|
proxy = new Proxy({}, {
|
|
224
224
|
get(_, key: any) {
|
|
@@ -254,7 +254,7 @@ export default <T extends unknown[]>(data: T) => {
|
|
|
254
254
|
|
|
255
255
|
return true;
|
|
256
256
|
}
|
|
257
|
-
}) as
|
|
257
|
+
}) as ReactiveArray<typeof data>,
|
|
258
258
|
wrapper = {
|
|
259
259
|
[REACTIVE_ARRAY]: true,
|
|
260
260
|
at: (i: number) => data[i],
|
|
@@ -271,7 +271,7 @@ export default <T extends unknown[]>(data: T) => {
|
|
|
271
271
|
return proxy;
|
|
272
272
|
},
|
|
273
273
|
map: <R>(
|
|
274
|
-
fn: (this:
|
|
274
|
+
fn: (this: ReactiveArray<typeof data>, value: T, i: number) => R,
|
|
275
275
|
i?: number,
|
|
276
276
|
n?: number
|
|
277
277
|
) => {
|
|
@@ -292,7 +292,7 @@ export default <T extends unknown[]>(data: T) => {
|
|
|
292
292
|
return proxy;
|
|
293
293
|
},
|
|
294
294
|
shift: () => shift(data, listeners),
|
|
295
|
-
sort: (fn: (a: T
|
|
295
|
+
sort: (fn: (a: T, b: T) => number) => {
|
|
296
296
|
sort(data, listeners, fn);
|
|
297
297
|
return proxy;
|
|
298
298
|
},
|
|
@@ -304,4 +304,4 @@ export default <T extends unknown[]>(data: T) => {
|
|
|
304
304
|
|
|
305
305
|
return proxy;
|
|
306
306
|
};
|
|
307
|
-
export type {
|
|
307
|
+
export type { ReactiveArray };
|