easy-signal 4.0.2 → 4.1.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.
- package/dist/store.d.ts +12 -0
- package/dist/store.js +38 -0
- package/dist/store.js.map +1 -1
- package/package.json +1 -1
- package/src/store.ts +37 -0
package/dist/store.d.ts
CHANGED
|
@@ -39,4 +39,16 @@ export declare function observe<T>(fn: () => T): Unsubscriber;
|
|
|
39
39
|
* Create a `Readable` store that derives its value from other stores and updates when those stores change.
|
|
40
40
|
*/
|
|
41
41
|
export declare function derived<T>(fn: (priorValue: T) => T, value?: T): Readable<T>;
|
|
42
|
+
/**
|
|
43
|
+
* Allows setting multiple stores at once and only notifying subscribers once after the batch function is run.
|
|
44
|
+
*/
|
|
42
45
|
export declare function batch(fn: () => void): void;
|
|
46
|
+
/**
|
|
47
|
+
* Provides a promise that resolves when the store is no longer `null` or `undefined` and continues to return the latest
|
|
48
|
+
* value when it changes (i.e. it does not resolve once and remain at that value).
|
|
49
|
+
*/
|
|
50
|
+
export declare function whenReadable<T>(store: Readable<T>): Promise<T>;
|
|
51
|
+
/**
|
|
52
|
+
* Provides a promise that resolves after the store changes and returns the new value.
|
|
53
|
+
*/
|
|
54
|
+
export declare function afterChange<T>(store: Readable<T>): Promise<T>;
|
package/dist/store.js
CHANGED
|
@@ -132,9 +132,47 @@ export function derived(fn, value) {
|
|
|
132
132
|
return () => unsubscribes.forEach(u => u());
|
|
133
133
|
});
|
|
134
134
|
}
|
|
135
|
+
/**
|
|
136
|
+
* Allows setting multiple stores at once and only notifying subscribers once after the batch function is run.
|
|
137
|
+
*/
|
|
135
138
|
export function batch(fn) {
|
|
136
139
|
queue(fn, true);
|
|
137
140
|
}
|
|
141
|
+
/**
|
|
142
|
+
* Provides a promise that resolves when the store is no longer `null` or `undefined` and continues to return the latest
|
|
143
|
+
* value when it changes (i.e. it does not resolve once and remain at that value).
|
|
144
|
+
*/
|
|
145
|
+
export function whenReadable(store) {
|
|
146
|
+
return {
|
|
147
|
+
then: ((resolve) => {
|
|
148
|
+
const value = store.get();
|
|
149
|
+
if (value != null)
|
|
150
|
+
return resolve(value);
|
|
151
|
+
const unsubscribe = store.subscribe(value => {
|
|
152
|
+
if (value == null)
|
|
153
|
+
return;
|
|
154
|
+
unsubscribe();
|
|
155
|
+
resolve(value);
|
|
156
|
+
});
|
|
157
|
+
}),
|
|
158
|
+
catch() { },
|
|
159
|
+
finally() { },
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Provides a promise that resolves after the store changes and returns the new value.
|
|
164
|
+
*/
|
|
165
|
+
export function afterChange(store) {
|
|
166
|
+
return new Promise(resolve => {
|
|
167
|
+
let init = true;
|
|
168
|
+
const unsubscribe = store.subscribe(value => {
|
|
169
|
+
if (init)
|
|
170
|
+
return init = false;
|
|
171
|
+
unsubscribe();
|
|
172
|
+
resolve(value);
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
}
|
|
138
176
|
function queue(fn, batch) {
|
|
139
177
|
const runQueue = !root.subscriberQueue.size;
|
|
140
178
|
if (runQueue && batch) {
|
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
package/src/store.ts
CHANGED
|
@@ -197,10 +197,47 @@ export function derived<T>(fn: (priorValue: T) => T, value?: T): Readable<T> {
|
|
|
197
197
|
});
|
|
198
198
|
}
|
|
199
199
|
|
|
200
|
+
/**
|
|
201
|
+
* Allows setting multiple stores at once and only notifying subscribers once after the batch function is run.
|
|
202
|
+
*/
|
|
200
203
|
export function batch(fn: () => void) {
|
|
201
204
|
queue(fn, true);
|
|
202
205
|
}
|
|
203
206
|
|
|
207
|
+
/**
|
|
208
|
+
* Provides a promise that resolves when the store is no longer `null` or `undefined` and continues to return the latest
|
|
209
|
+
* value when it changes (i.e. it does not resolve once and remain at that value).
|
|
210
|
+
*/
|
|
211
|
+
export function whenReadable<T>(store: Readable<T>): Promise<T> {
|
|
212
|
+
return {
|
|
213
|
+
then: ((resolve: (value: T) => void) => {
|
|
214
|
+
const value = store.get();
|
|
215
|
+
if (value != null) return resolve(value);
|
|
216
|
+
const unsubscribe = store.subscribe(value => {
|
|
217
|
+
if (value == null) return;
|
|
218
|
+
unsubscribe();
|
|
219
|
+
resolve(value);
|
|
220
|
+
});
|
|
221
|
+
}),
|
|
222
|
+
catch(){},
|
|
223
|
+
finally(){},
|
|
224
|
+
} as Promise<T>;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* Provides a promise that resolves after the store changes and returns the new value.
|
|
229
|
+
*/
|
|
230
|
+
export function afterChange<T>(store: Readable<T>): Promise<T> {
|
|
231
|
+
return new Promise(resolve => {
|
|
232
|
+
let init = true;
|
|
233
|
+
const unsubscribe = store.subscribe(value => {
|
|
234
|
+
if (init) return init = false;
|
|
235
|
+
unsubscribe();
|
|
236
|
+
resolve(value);
|
|
237
|
+
});
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
|
|
204
241
|
function queue(fn: () => void, batch?: boolean) {
|
|
205
242
|
const runQueue = !root.subscriberQueue.size;
|
|
206
243
|
if (runQueue && batch) {
|