easy-signal 3.2.2 → 3.2.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.
@@ -28,7 +28,7 @@ export interface ReactiveSignal<T> extends ComputedSignal<T> {
28
28
  */
29
29
  export interface ComputedSignal<T> {
30
30
  (): T;
31
- subscribe: (subscriber: ReactiveSignalSubscriber<T>, timing?: Timing | null) => Unsubscribe;
31
+ subscribe: (subscriber: ReactiveSignalSubscriber<T>, timing?: Timing | null, deferInitial?: boolean) => Unsubscribe;
32
32
  }
33
33
  /**
34
34
  * A Signal Subscriber is a function that will be called whenever the signal's value changes. The subscriber will be
@@ -76,7 +76,7 @@ export declare function reactiveSignal<T>(value: T, options?: SignalOptions<T>):
76
76
  *
77
77
  * The returned function can be called to unsubscribe from the Signal.
78
78
  */
79
- export declare function subscribe<T>(signal: ReactiveSignal<T>, subscriber: ReactiveSignalSubscriber<T>, timing?: Timing | null): Unsubscribe;
79
+ export declare function subscribe<T>(signal: ReactiveSignal<T>, changeHandler: ReactiveSignalSubscriber<T>, timing?: Timing | null, deferInitial?: boolean): Unsubscribe;
80
80
  /**
81
81
  * Get notified when a Signal's subscribers changes from none to some or some to none.
82
82
  */
@@ -84,20 +84,23 @@ export function reactiveSignal(value, options) {
84
84
  *
85
85
  * The returned function can be called to unsubscribe from the Signal.
86
86
  */
87
- export function subscribe(signal, subscriber, timing = Timing.Tick) {
87
+ export function subscribe(signal, changeHandler, timing = Timing.Tick, deferInitial = false) {
88
+ let subscriber;
88
89
  if (timing) {
89
90
  let queued = false;
90
- const subFn = subscriber;
91
91
  subscriber = () => {
92
92
  if (!queued) {
93
93
  queued = true;
94
94
  timing(() => {
95
95
  queued = false;
96
- subFn(signal());
96
+ changeHandler(signal());
97
97
  });
98
98
  }
99
99
  };
100
100
  }
101
+ else {
102
+ subscriber = changeHandler;
103
+ }
101
104
  // Set the current context so we can get the unsubscribe
102
105
  context = { prior: context, subscriber, unsubscribes: new Set() };
103
106
  // Get the current value of the signal
@@ -106,8 +109,8 @@ export function subscribe(signal, subscriber, timing = Timing.Tick) {
106
109
  const unsubscribe = context.unsubscribes.values().next().value;
107
110
  // Clear the current context
108
111
  context = context.prior;
109
- // Call the subscriber with the current value
110
- subscriber(value);
112
+ // Call the changeHandler with the current value immediately, regardless of timing, unless deferred
113
+ deferInitial ? subscriber(value) : changeHandler(value);
111
114
  // Return the unsubscribe function
112
115
  return unsubscribe;
113
116
  }
@@ -1 +1 @@
1
- {"version":3,"file":"reactiveSignal.js","sourceRoot":"","sources":["../src/reactiveSignal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reactiveSignal.js","sourceRoot":"","sources":["../src/reactiveSignal.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "easy-signal",
3
- "version": "3.2.2",
3
+ "version": "3.2.3",
4
4
  "description": "A tiny (25 LOC), simple utility for alerting subscribers when an event happens, allowing for error handling and clearing.",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
@@ -48,7 +48,7 @@ export interface ReactiveSignal<T> extends ComputedSignal<T> {
48
48
  */
49
49
  export interface ComputedSignal<T> {
50
50
  (): T;
51
- subscribe: (subscriber: ReactiveSignalSubscriber<T>, timing?: Timing | null) => Unsubscribe;
51
+ subscribe: (subscriber: ReactiveSignalSubscriber<T>, timing?: Timing | null, deferInitial?: boolean) => Unsubscribe;
52
52
  }
53
53
 
54
54
  /**
@@ -169,21 +169,24 @@ export function reactiveSignal<T>(value: T, options?: SignalOptions<T>): Reactiv
169
169
  */
170
170
  export function subscribe<T>(
171
171
  signal: ReactiveSignal<T>,
172
- subscriber: ReactiveSignalSubscriber<T>,
173
- timing: Timing | null = Timing.Tick
172
+ changeHandler: ReactiveSignalSubscriber<T>,
173
+ timing: Timing | null = Timing.Tick,
174
+ deferInitial = false
174
175
  ): Unsubscribe {
176
+ let subscriber: ReactiveSignalSubscriber<T>;
175
177
  if (timing) {
176
178
  let queued = false;
177
- const subFn = subscriber;
178
179
  subscriber = () => {
179
180
  if (!queued) {
180
181
  queued = true;
181
182
  timing(() => {
182
183
  queued = false;
183
- subFn(signal());
184
+ changeHandler(signal());
184
185
  });
185
186
  }
186
187
  };
188
+ } else {
189
+ subscriber = changeHandler;
187
190
  }
188
191
 
189
192
  // Set the current context so we can get the unsubscribe
@@ -198,8 +201,8 @@ export function subscribe<T>(
198
201
  // Clear the current context
199
202
  context = context.prior;
200
203
 
201
- // Call the subscriber with the current value
202
- subscriber(value);
204
+ // Call the changeHandler with the current value immediately, regardless of timing, unless deferred
205
+ deferInitial ? subscriber(value) : changeHandler(value);
203
206
 
204
207
  // Return the unsubscribe function
205
208
  return unsubscribe;