@oscarpalmer/mora 0.19.0 → 0.21.0

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.
@@ -52,13 +52,13 @@ export type ReactiveState<Value, Equal> = {
52
52
  computeds: Set<Computed<unknown>>;
53
53
  effects: Set<Effect>;
54
54
  equal: (first: Equal, second: Equal) => boolean;
55
- subscriptions: Map<(value: Value) => void, Subscription<Value>>;
55
+ subscriptions: Map<GenericCallback, Subscription>;
56
56
  value: Value;
57
57
  };
58
- declare class Subscription<Value> {
59
- state: ReactiveState<Value, never>;
58
+ declare class Subscription {
59
+ state: ReactiveState<unknown, never>;
60
60
  callback: GenericCallback;
61
- constructor(state: ReactiveState<Value, never>, callback: GenericCallback);
61
+ constructor(state: ReactiveState<unknown, never>, callback: GenericCallback);
62
62
  }
63
63
  /**
64
64
  * Unsubscribe from changes
@@ -75,7 +75,7 @@ export declare class Signal<Value> extends Reactive<Value> {
75
75
  */
76
76
  set(value: Value): void;
77
77
  /**
78
- * Update the value
78
+ * Update the value _(based on the current value)_
79
79
  */
80
80
  update(callback: (value: Value) => Value): void;
81
81
  }
@@ -10,7 +10,7 @@ export declare class Signal<Value> extends Reactive<Value> {
10
10
  */
11
11
  set(value: Value): void;
12
12
  /**
13
- * Update the value
13
+ * Update the value _(based on the current value)_
14
14
  */
15
15
  update(callback: (value: Value) => Value): void;
16
16
  }
@@ -60,13 +60,13 @@ export type ReactiveState<Value, Equal> = {
60
60
  computeds: Set<Computed<unknown>>;
61
61
  effects: Set<Effect>;
62
62
  equal: (first: Equal, second: Equal) => boolean;
63
- subscriptions: Map<(value: Value) => void, Subscription<Value>>;
63
+ subscriptions: Map<GenericCallback, Subscription>;
64
64
  value: Value;
65
65
  };
66
- declare class Subscription<Value> {
67
- state: ReactiveState<Value, never>;
66
+ declare class Subscription {
67
+ state: ReactiveState<unknown, never>;
68
68
  callback: GenericCallback;
69
- constructor(state: ReactiveState<Value, never>, callback: GenericCallback);
69
+ constructor(state: ReactiveState<unknown, never>, callback: GenericCallback);
70
70
  }
71
71
  /**
72
72
  * Unsubscribe from changes
@@ -111,6 +111,22 @@ export declare class Store<Value extends PlainObject> extends Reactive<Value, Va
111
111
  * Set a value by key
112
112
  */
113
113
  set(key: Key, value: unknown): void;
114
+ /**
115
+ * @inheritdoc
116
+ */
117
+ subscribe(callback: (value: Value) => void): Unsubscribe;
118
+ /**
119
+ * Subscribe to changes for a specific key
120
+ */
121
+ subscribe<Key extends keyof Value>(key: Key, callback: (value: Value[Key] | undefined) => void): Unsubscribe;
122
+ /**
123
+ * Subscribe to changes for a specific key
124
+ */
125
+ subscribe(key: Key, callback: (value: unknown) => void): Unsubscribe;
126
+ /**
127
+ * Update the value _(based on the current value)_
128
+ */
129
+ update(callback: (value: Value) => Value): void;
114
130
  }
115
131
  /**
116
132
  * Create a reactive store
@@ -1,4 +1,5 @@
1
1
  import type { Key, PlainObject } from '@oscarpalmer/atoms/models';
2
+ import { type Unsubscribe } from '../subscription';
2
3
  import { Reactive, type ReactiveOptions } from './reactive';
3
4
  export declare class Store<Value extends PlainObject> extends Reactive<Value, Value> {
4
5
  #private;
@@ -39,6 +40,22 @@ export declare class Store<Value extends PlainObject> extends Reactive<Value, Va
39
40
  * Set a value by key
40
41
  */
41
42
  set(key: Key, value: unknown): void;
43
+ /**
44
+ * @inheritdoc
45
+ */
46
+ subscribe(callback: (value: Value) => void): Unsubscribe;
47
+ /**
48
+ * Subscribe to changes for a specific key
49
+ */
50
+ subscribe<Key extends keyof Value>(key: Key, callback: (value: Value[Key] | undefined) => void): Unsubscribe;
51
+ /**
52
+ * Subscribe to changes for a specific key
53
+ */
54
+ subscribe(key: Key, callback: (value: unknown) => void): Unsubscribe;
55
+ /**
56
+ * Update the value _(based on the current value)_
57
+ */
58
+ update(callback: (value: Value) => Value): void;
42
59
  }
43
60
  /**
44
61
  * Create a reactive store