@esportsplus/reactivity 0.0.13 → 0.0.15

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/index.d.ts CHANGED
@@ -2,7 +2,7 @@ import { scheduler } from './reactive';
2
2
  import { effect, reactive } from './methods';
3
3
  declare const _default: {
4
4
  effect: <T>(fn: () => T) => void;
5
- reactive: <T_1>(value: T_1) => import("./types").Infer<T_1>;
5
+ reactive: <T_1>(value: T_1) => T_1 | import("./reactive").default<T_1 & Function> | ((...args: any[]) => (T_1 & Function extends infer T_2 ? T_2 extends T_1 & Function ? T_2 extends (...args: any[]) => any ? ReturnType<T_2> : T_2 : never : never) extends (...args: any[]) => any ? ReturnType<((...args: any[]) => any) & (T_1 & Function extends infer T_2 ? T_2 extends T_1 & Function ? T_2 extends (...args: any[]) => any ? ReturnType<T_2> : T_2 : never : never)> : T_1 & Function extends infer T_2 ? T_2 extends T_1 & Function ? T_2 extends (...args: any[]) => any ? ReturnType<T_2> : T_2 : never : never);
6
6
  scheduler: {
7
7
  add: (scheduler: import("./types").Scheduler) => void;
8
8
  delete: (scheduler: import("./types").Scheduler) => void;
@@ -1,3 +1,3 @@
1
- import { Infer } from '../types';
2
- declare const _default: <T>(value: T) => Infer<T>;
1
+ import Reactive from '../reactive';
2
+ declare const _default: <T>(value: T) => T | Reactive<T & Function> | ((...args: any[]) => (T & Function extends infer T_1 ? T_1 extends T & Function ? T_1 extends (...args: any[]) => any ? ReturnType<T_1> : T_1 : never : never) extends (...args: any[]) => any ? ReturnType<((...args: any[]) => any) & (T & Function extends infer T_1 ? T_1 extends T & Function ? T_1 extends (...args: any[]) => any ? ReturnType<T_1> : T_1 : never : never)> : T & Function extends infer T_1 ? T_1 extends T & Function ? T_1 extends (...args: any[]) => any ? ReturnType<T_1> : T_1 : never : never);
3
3
  export default _default;
@@ -1,15 +1,18 @@
1
1
  import Reactive from '../reactive';
2
- function factory(value) {
2
+ function factory(value, wrap = false) {
3
3
  if (typeof value === 'function') {
4
- return fn(value);
4
+ return fn(value, wrap);
5
5
  }
6
6
  if (typeof value === 'object' && value !== null && (value.constructor === Object)) {
7
7
  return obj(value);
8
8
  }
9
9
  return new Reactive(value);
10
10
  }
11
- function fn(value) {
11
+ function fn(value, wrap) {
12
12
  let fn = new Reactive(value);
13
+ if (!wrap) {
14
+ return fn;
15
+ }
13
16
  return (...args) => {
14
17
  let value = fn.get();
15
18
  if (args.length && typeof value === 'function') {
@@ -26,9 +29,6 @@ function obj(values) {
26
29
  if (!lazy[key]) {
27
30
  lazy[key] = factory(values[key]);
28
31
  }
29
- if (typeof values[key] === 'function') {
30
- return lazy[key]();
31
- }
32
32
  if (lazy[key] instanceof Reactive) {
33
33
  return lazy[key].get();
34
34
  }
@@ -50,4 +50,4 @@ function obj(values) {
50
50
  return Object.defineProperties({}, properties);
51
51
  }
52
52
  ;
53
- export default (value) => factory(value);
53
+ export default (value) => factory(value, true);
package/package.json CHANGED
@@ -15,5 +15,5 @@
15
15
  "prepublishOnly": "npm run build"
16
16
  },
17
17
  "types": "./build/index.d.ts",
18
- "version": "0.0.13"
18
+ "version": "0.0.15"
19
19
  }
@@ -1,10 +1,9 @@
1
- import { Infer } from '~/types';
2
1
  import Reactive from '~/reactive';
3
2
 
4
3
 
5
- function factory<T>(value: T) {
4
+ function factory<T>(value: T, wrap = false) {
6
5
  if (typeof value === 'function') {
7
- return fn(value);
6
+ return fn(value, wrap);
8
7
  }
9
8
 
10
9
  if (typeof value === 'object' && value !== null && (value.constructor === Object)) {
@@ -14,9 +13,15 @@ function factory<T>(value: T) {
14
13
  return new Reactive(value) as T;
15
14
  }
16
15
 
17
- function fn<T>(value: T) {
16
+ function fn<T>(value: T, wrap: boolean) {
18
17
  let fn = new Reactive(value);
19
18
 
19
+ // We're inside an object, it will unwrap reactive values
20
+ if (!wrap) {
21
+ return fn;
22
+ }
23
+
24
+ // Factory functions are wrapped to remove '.get' usage
20
25
  return (...args: any[]) => {
21
26
  let value = fn.get();
22
27
 
@@ -42,10 +47,6 @@ function obj<T>(values: T) {
42
47
  lazy[key] = factory(values[key]);
43
48
  }
44
49
 
45
- if (typeof values[key] === 'function') {
46
- return lazy[key]();
47
- }
48
-
49
50
  if (lazy[key] instanceof Reactive) {
50
51
  return lazy[key].get();
51
52
  }
@@ -71,4 +72,4 @@ function obj<T>(values: T) {
71
72
  };
72
73
 
73
74
 
74
- export default <T>(value: T) => factory(value) as Infer<T>;
75
+ export default <T>(value: T) => factory(value, true);