@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.
@@ -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: <T, K extends keyof Events<T>, V>(event: K, value?: V) => void;
6
- map: <T, R>(this: API<T>, fn: (this: API<T>, value: T, i: number) => R, i?: number, n?: number) => R[];
7
- on: <T, K extends keyof Events<T>>(event: K, listener: Listener<Events<T>[K]>) => void;
8
- once: <T, K extends keyof Events<T>>(event: K, listener: Listener<Events<T>[K]>) => void;
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[]) => API<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
@@ -12,7 +12,7 @@
12
12
  "private": false,
13
13
  "type": "module",
14
14
  "types": "build/index.d.ts",
15
- "version": "0.14.0",
15
+ "version": "0.14.1",
16
16
  "scripts": {
17
17
  "build": "tsc && tsc-alias",
18
18
  "-": "-"
@@ -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> = Infer<T[]> & {
8
- clear: () => void;
9
- dispose: () => void;
10
- dispatch: <T, K extends keyof Events<T>, V>(event: K, value?: V) => void;
11
- map: <T, R>(this: API<T>, fn: (this: API<T>, value: T, i: number) => R, i?: number, n?: number) => R[];
12
- on: <T, K extends keyof Events<T>>(event: K, listener: Listener<Events<T>[K]>) => void;
13
- once: <T, K extends keyof Events<T>>(event: K, listener: Listener<Events<T>[K]>) => void;
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[], listeners: Listeners, fn: (a: T, b: T) => number) {
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[], listeners: Listeners, start: number, deleteCount: number = data.length, items: 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
  },