@dxos/async 0.7.4 → 0.7.5-labs.071a3e2
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/lib/browser/index.mjs +38 -4
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node/index.cjs +38 -4
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +38 -4
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/types/src/events.d.ts +13 -2
- package/dist/types/src/events.d.ts.map +1 -1
- package/dist/types/src/task-scheduling.d.ts +1 -0
- package/dist/types/src/task-scheduling.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -0
- package/package.json +7 -7
- package/src/events.test.ts +15 -0
- package/src/events.ts +49 -9
- package/src/task-scheduling.ts +4 -0
package/dist/lib/node/meta.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"packages/common/async/src/callback.ts":{"bytes":1594,"imports":[],"format":"esm"},"packages/common/async/src/chain.ts":{"bytes":1701,"imports":[],"format":"esm"},"packages/common/async/src/debounce.ts":{"bytes":1275,"imports":[],"format":"esm"},"packages/common/async/src/errors.ts":{"bytes":3008,"imports":[],"format":"esm"},"packages/common/async/src/timeout.ts":{"bytes":7907,"imports":[{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"packages/common/async/src/callback.ts","kind":"import-statement","original":"./callback"},{"path":"packages/common/async/src/errors.ts","kind":"import-statement","original":"./errors"}],"format":"esm"},"packages/common/async/src/event-emitter.ts":{"bytes":4236,"imports":[{"path":"packages/common/async/src/timeout.ts","kind":"import-statement","original":"./timeout"}],"format":"esm"},"packages/common/async/src/events.ts":{"bytes":
|
|
1
|
+
{"inputs":{"packages/common/async/src/callback.ts":{"bytes":1594,"imports":[],"format":"esm"},"packages/common/async/src/chain.ts":{"bytes":1701,"imports":[],"format":"esm"},"packages/common/async/src/debounce.ts":{"bytes":1275,"imports":[],"format":"esm"},"packages/common/async/src/errors.ts":{"bytes":3008,"imports":[],"format":"esm"},"packages/common/async/src/timeout.ts":{"bytes":7907,"imports":[{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"packages/common/async/src/callback.ts","kind":"import-statement","original":"./callback"},{"path":"packages/common/async/src/errors.ts","kind":"import-statement","original":"./errors"}],"format":"esm"},"packages/common/async/src/event-emitter.ts":{"bytes":4236,"imports":[{"path":"packages/common/async/src/timeout.ts","kind":"import-statement","original":"./timeout"}],"format":"esm"},"packages/common/async/src/events.ts":{"bytes":40649,"imports":[{"path":"@dxos/context","kind":"import-statement","external":true}],"format":"esm"},"packages/common/async/src/latch.ts":{"bytes":4484,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true}],"format":"esm"},"packages/common/async/src/trigger.ts":{"bytes":10376,"imports":[{"path":"packages/common/async/src/errors.ts","kind":"import-statement","original":"./errors"},{"path":"packages/common/async/src/timeout.ts","kind":"import-statement","original":"./timeout"}],"format":"esm"},"packages/common/async/src/observable.ts":{"bytes":18063,"imports":[{"path":"zen-observable","kind":"import-statement","external":true},{"path":"zen-push","kind":"import-statement","external":true},{"path":"packages/common/async/src/trigger.ts","kind":"import-statement","original":"./trigger"}],"format":"esm"},"packages/common/async/src/observable-value.ts":{"bytes":6622,"imports":[{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/common/async/src/mutex.ts":{"bytes":12860,"imports":[{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true}],"format":"esm"},"packages/common/async/src/sink.ts":{"bytes":2055,"imports":[{"path":"packages/common/async/src/trigger.ts","kind":"import-statement","original":"./trigger"}],"format":"esm"},"packages/common/async/src/stream-to-array.ts":{"bytes":5040,"imports":[],"format":"esm"},"packages/common/async/src/timer.ts":{"bytes":6062,"imports":[{"path":"packages/common/async/src/events.ts","kind":"import-statement","original":"./events"}],"format":"esm"},"packages/common/async/src/testing.ts":{"bytes":4756,"imports":[{"path":"packages/common/async/src/timeout.ts","kind":"import-statement","original":"./timeout"},{"path":"packages/common/async/src/trigger.ts","kind":"import-statement","original":"./trigger"}],"format":"esm"},"packages/common/async/src/types.ts":{"bytes":517,"imports":[],"format":"esm"},"packages/common/async/src/until.ts":{"bytes":4408,"imports":[],"format":"esm"},"packages/common/async/src/track-leaks.ts":{"bytes":8583,"imports":[{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"packages/common/async/src/task-scheduling.ts":{"bytes":15749,"imports":[{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"packages/common/async/src/track-leaks.ts","kind":"import-statement","original":"./track-leaks"},{"path":"packages/common/async/src/trigger.ts","kind":"import-statement","original":"./trigger"}],"format":"esm"},"packages/common/async/src/test-stream.ts":{"bytes":5087,"imports":[{"path":"node:stream","kind":"import-statement","external":true},{"path":"packages/common/async/src/events.ts","kind":"import-statement","original":"./events"},{"path":"packages/common/async/src/timeout.ts","kind":"import-statement","original":"./timeout"}],"format":"esm"},"packages/common/async/src/update-scheduler.ts":{"bytes":9920,"imports":[{"path":"packages/common/async/src/task-scheduling.ts","kind":"import-statement","original":"./task-scheduling"}],"format":"esm"},"packages/common/async/src/index.ts":{"bytes":2419,"imports":[{"path":"packages/common/async/src/callback.ts","kind":"import-statement","original":"./callback"},{"path":"packages/common/async/src/chain.ts","kind":"import-statement","original":"./chain"},{"path":"packages/common/async/src/debounce.ts","kind":"import-statement","original":"./debounce"},{"path":"packages/common/async/src/errors.ts","kind":"import-statement","original":"./errors"},{"path":"packages/common/async/src/event-emitter.ts","kind":"import-statement","original":"./event-emitter"},{"path":"packages/common/async/src/events.ts","kind":"import-statement","original":"./events"},{"path":"packages/common/async/src/latch.ts","kind":"import-statement","original":"./latch"},{"path":"packages/common/async/src/observable.ts","kind":"import-statement","original":"./observable"},{"path":"packages/common/async/src/observable-value.ts","kind":"import-statement","original":"./observable-value"},{"path":"packages/common/async/src/mutex.ts","kind":"import-statement","original":"./mutex"},{"path":"packages/common/async/src/sink.ts","kind":"import-statement","original":"./sink"},{"path":"packages/common/async/src/stream-to-array.ts","kind":"import-statement","original":"./stream-to-array"},{"path":"packages/common/async/src/timeout.ts","kind":"import-statement","original":"./timeout"},{"path":"packages/common/async/src/timer.ts","kind":"import-statement","original":"./timer"},{"path":"packages/common/async/src/testing.ts","kind":"import-statement","original":"./testing"},{"path":"packages/common/async/src/trigger.ts","kind":"import-statement","original":"./trigger"},{"path":"packages/common/async/src/types.ts","kind":"import-statement","original":"./types"},{"path":"packages/common/async/src/until.ts","kind":"import-statement","original":"./until"},{"path":"packages/common/async/src/task-scheduling.ts","kind":"import-statement","original":"./task-scheduling"},{"path":"packages/common/async/src/test-stream.ts","kind":"import-statement","original":"./test-stream"},{"path":"packages/common/async/src/track-leaks.ts","kind":"import-statement","original":"./track-leaks"},{"path":"packages/common/async/src/update-scheduler.ts","kind":"import-statement","original":"./update-scheduler"}],"format":"esm"}},"outputs":{"packages/common/async/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":85854},"packages/common/async/dist/lib/node/index.cjs":{"imports":[{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"zen-observable","kind":"import-statement","external":true},{"path":"zen-push","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"node:stream","kind":"import-statement","external":true}],"exports":["CancellableObservableProvider","DeferredTask","Event","EventSubscriptions","MulticastObservable","Mutex","MutexGuard","Observable","ObservableProvider","PushStream","TestStream","TimeoutError","Timer","Trigger","TriggerState","UpdateScheduler","addListener","asyncChain","asyncReturn","asyncTimeout","createPromiseFromCallback","debounce","dumpLeaks","latch","observableError","onEvent","runInContext","runInContextAsync","scheduleExponentialBackoffTaskInterval","scheduleMicroTask","scheduleTask","scheduleTaskInterval","sink","sleep","sleepWithContext","streamToArray","synchronized","toError","trackLeaks","trackResource","trigger","unrefTimeout","until","untilError","untilPromise","waitForCondition","waitForEvent"],"entryPoint":"packages/common/async/src/index.ts","inputs":{"packages/common/async/src/callback.ts":{"bytesInOutput":191},"packages/common/async/src/index.ts":{"bytesInOutput":0},"packages/common/async/src/chain.ts":{"bytesInOutput":219},"packages/common/async/src/debounce.ts":{"bytesInOutput":144},"packages/common/async/src/errors.ts":{"bytesInOutput":473},"packages/common/async/src/timeout.ts":{"bytesInOutput":1487},"packages/common/async/src/event-emitter.ts":{"bytesInOutput":694},"packages/common/async/src/events.ts":{"bytesInOutput":8801},"packages/common/async/src/latch.ts":{"bytesInOutput":987},"packages/common/async/src/observable.ts":{"bytesInOutput":3695},"packages/common/async/src/trigger.ts":{"bytesInOutput":1959},"packages/common/async/src/observable-value.ts":{"bytesInOutput":975},"packages/common/async/src/mutex.ts":{"bytesInOutput":2444},"packages/common/async/src/sink.ts":{"bytesInOutput":285},"packages/common/async/src/stream-to-array.ts":{"bytesInOutput":967},"packages/common/async/src/timer.ts":{"bytesInOutput":1054},"packages/common/async/src/testing.ts":{"bytesInOutput":587},"packages/common/async/src/until.ts":{"bytesInOutput":760},"packages/common/async/src/task-scheduling.ts":{"bytesInOutput":3142},"packages/common/async/src/track-leaks.ts":{"bytesInOutput":2149},"packages/common/async/src/test-stream.ts":{"bytesInOutput":925},"packages/common/async/src/update-scheduler.ts":{"bytesInOutput":1855}},"bytes":35598}}}
|
|
@@ -139,6 +139,7 @@ var EventSubscriptions = class {
|
|
|
139
139
|
this._listeners.length = 0;
|
|
140
140
|
}
|
|
141
141
|
};
|
|
142
|
+
var DO_NOT_ERROR_ON_ASYNC_CALLBACK = true;
|
|
142
143
|
var Event = class _Event {
|
|
143
144
|
constructor() {
|
|
144
145
|
this._listeners = /* @__PURE__ */ new Set();
|
|
@@ -167,7 +168,23 @@ var Event = class _Event {
|
|
|
167
168
|
*/
|
|
168
169
|
emit(data) {
|
|
169
170
|
for (const listener of this._listeners) {
|
|
170
|
-
|
|
171
|
+
listener.trigger(data);
|
|
172
|
+
if (listener.once) {
|
|
173
|
+
this._listeners.delete(listener);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Emit an event and wait for async listeners to complete.
|
|
179
|
+
* In most cases should only be called by the class or entity containing the event.
|
|
180
|
+
* All listeners are called in order of subscription with persistent ones first.
|
|
181
|
+
* Listeners are called sequentially.
|
|
182
|
+
*
|
|
183
|
+
* @param data param that will be passed to all listeners.
|
|
184
|
+
*/
|
|
185
|
+
async emitAsync(data) {
|
|
186
|
+
for (const listener of this._listeners) {
|
|
187
|
+
await listener.triggerAsync(data);
|
|
171
188
|
if (listener.once) {
|
|
172
189
|
this._listeners.delete(listener);
|
|
173
190
|
}
|
|
@@ -180,7 +197,7 @@ var Event = class _Event {
|
|
|
180
197
|
] : [
|
|
181
198
|
new Context(void 0, {
|
|
182
199
|
F: __dxlog_file,
|
|
183
|
-
L:
|
|
200
|
+
L: 148
|
|
184
201
|
}),
|
|
185
202
|
_ctx
|
|
186
203
|
];
|
|
@@ -213,7 +230,7 @@ var Event = class _Event {
|
|
|
213
230
|
] : [
|
|
214
231
|
new Context(void 0, {
|
|
215
232
|
F: __dxlog_file,
|
|
216
|
-
L:
|
|
233
|
+
L: 185
|
|
217
234
|
}),
|
|
218
235
|
_ctx
|
|
219
236
|
];
|
|
@@ -397,7 +414,21 @@ var EventListener = class {
|
|
|
397
414
|
derefCallback() {
|
|
398
415
|
return this.weak ? this.callback.deref() : this.callback;
|
|
399
416
|
}
|
|
400
|
-
|
|
417
|
+
trigger(data) {
|
|
418
|
+
let result;
|
|
419
|
+
try {
|
|
420
|
+
const callback = this.derefCallback();
|
|
421
|
+
result = callback?.(data);
|
|
422
|
+
} catch (err) {
|
|
423
|
+
this.ctx.raise(err);
|
|
424
|
+
}
|
|
425
|
+
if (!DO_NOT_ERROR_ON_ASYNC_CALLBACK) {
|
|
426
|
+
if (result instanceof Promise) {
|
|
427
|
+
throw new TypeError("Event has async callbacks, use emitAsync instead");
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
async triggerAsync(data) {
|
|
401
432
|
try {
|
|
402
433
|
const callback = this.derefCallback();
|
|
403
434
|
await callback?.(data);
|
|
@@ -1070,6 +1101,9 @@ var DeferredTask = class {
|
|
|
1070
1101
|
this._currentTask = null;
|
|
1071
1102
|
this._nextTask = new Trigger();
|
|
1072
1103
|
}
|
|
1104
|
+
get scheduled() {
|
|
1105
|
+
return this._scheduled;
|
|
1106
|
+
}
|
|
1073
1107
|
/**
|
|
1074
1108
|
* Schedule the task to run asynchronously.
|
|
1075
1109
|
*/
|