easy-signal 4.1.1 → 4.1.2

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/dist/store.d.ts CHANGED
@@ -48,6 +48,12 @@ export declare function batch(fn: () => void): void;
48
48
  * value when it changes (i.e. it does not resolve once and remain at that value).
49
49
  */
50
50
  export declare function whenReadable<T>(store: Readable<T>): Promise<T>;
51
+ /**
52
+ * Provides a promise that resolves when the store's value meets the provided condition and will continue to return the
53
+ * latest value as long as it meets the condition. It will not resolve once and remain at that value like a regular
54
+ * promise.
55
+ */
56
+ export declare function whenMatches<T>(store: Readable<T>, matches: (value: T) => boolean): Promise<T>;
51
57
  /**
52
58
  * Provides a promise that resolves after the store changes and returns the new value.
53
59
  */
package/dist/store.js CHANGED
@@ -143,13 +143,21 @@ export function batch(fn) {
143
143
  * value when it changes (i.e. it does not resolve once and remain at that value).
144
144
  */
145
145
  export function whenReadable(store) {
146
+ return whenMatches(store, v => v != null);
147
+ }
148
+ /**
149
+ * Provides a promise that resolves when the store's value meets the provided condition and will continue to return the
150
+ * latest value as long as it meets the condition. It will not resolve once and remain at that value like a regular
151
+ * promise.
152
+ */
153
+ export function whenMatches(store, matches) {
146
154
  return {
147
155
  then: ((resolve) => {
148
156
  const value = store.get();
149
- if (value != null)
157
+ if (matches(value))
150
158
  return resolve(value);
151
159
  const unsubscribe = store.subscribe(value => {
152
- if (value == null)
160
+ if (!matches(value))
153
161
  return;
154
162
  unsubscribe();
155
163
  resolve(value);
package/dist/store.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "easy-signal",
3
- "version": "4.1.1",
3
+ "version": "4.1.2",
4
4
  "description": "A package with 2 types of signals, an small and simple event signal, and a reactive value-based signal called stores.",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
package/src/store.ts CHANGED
@@ -209,12 +209,21 @@ export function batch(fn: () => void) {
209
209
  * value when it changes (i.e. it does not resolve once and remain at that value).
210
210
  */
211
211
  export function whenReadable<T>(store: Readable<T>): Promise<T> {
212
+ return whenMatches(store, v => v != null) as Promise<T>;
213
+ }
214
+
215
+ /**
216
+ * Provides a promise that resolves when the store's value meets the provided condition and will continue to return the
217
+ * latest value as long as it meets the condition. It will not resolve once and remain at that value like a regular
218
+ * promise.
219
+ */
220
+ export function whenMatches<T>(store: Readable<T>, matches: (value: T) => boolean): Promise<T> {
212
221
  return {
213
- then: ((resolve: (value: T) => void) => {
222
+ then: ((resolve: (value: T) => any) => {
214
223
  const value = store.get();
215
- if (value != null) return resolve(value);
224
+ if (matches(value)) return resolve(value);
216
225
  const unsubscribe = store.subscribe(value => {
217
- if (value == null) return;
226
+ if (!matches(value)) return;
218
227
  unsubscribe();
219
228
  resolve(value);
220
229
  });