@dxos/async 0.8.1 → 0.8.2-main.f081794

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.
@@ -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/cleanup.ts":{"bytes":3565,"imports":[{"path":"@dxos/util","kind":"import-statement","external":true}],"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":39310,"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/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/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":6582,"imports":[{"path":"@dxos/util","kind":"import-statement","external":true}],"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":15693,"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/persistent-lifecycle.ts":{"bytes":12924,"imports":[{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"packages/common/async/src/mutex.ts","kind":"import-statement","original":"./mutex"},{"path":"packages/common/async/src/task-scheduling.ts","kind":"import-statement","original":"./task-scheduling"},{"path":"packages/common/async/src/timeout.ts","kind":"import-statement","original":"./timeout"}],"format":"esm"},"packages/common/async/src/push-iterable.ts":{"bytes":6055,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"packages/common/async/src/trigger.ts","kind":"import-statement","original":"./trigger"}],"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/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/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/timer.ts":{"bytes":6062,"imports":[{"path":"packages/common/async/src/events.ts","kind":"import-statement","original":"./events"}],"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/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":2731,"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/cleanup.ts","kind":"import-statement","original":"./cleanup"},{"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/mutex.ts","kind":"import-statement","original":"./mutex"},{"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/persistent-lifecycle.ts","kind":"import-statement","original":"./persistent-lifecycle"},{"path":"packages/common/async/src/push-iterable.ts","kind":"import-statement","original":"./push-iterable"},{"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/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/testing.ts","kind":"import-statement","original":"./testing"},{"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/track-leaks.ts","kind":"import-statement","original":"./track-leaks"},{"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/update-scheduler.ts","kind":"import-statement","original":"./update-scheduler"}],"format":"esm"}},"outputs":{"packages/common/async/dist/lib/node-esm/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":95534},"packages/common/async/dist/lib/node-esm/index.mjs":{"imports":[{"path":"@dxos/util","kind":"import-statement","external":true},{"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":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/debug","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/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/log","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":"@dxos/invariant","kind":"import-statement","external":true},{"path":"node:stream","kind":"import-statement","external":true}],"exports":["CancellableObservableProvider","DeferredTask","Event","MulticastObservable","Mutex","MutexGuard","Observable","ObservableProvider","PersistentLifecycle","PushStream","SubscriptionList","SubscriptionSet","TestStream","TimeoutError","Timer","Trigger","TriggerState","UpdateScheduler","addListener","asyncChain","asyncReturn","asyncTimeout","combine","createPromiseFromCallback","debounce","dumpLeaks","latch","makePushIterable","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/cleanup.ts":{"bytesInOutput":670},"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":8580},"packages/common/async/src/latch.ts":{"bytesInOutput":987},"packages/common/async/src/mutex.ts":{"bytesInOutput":2444},"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/persistent-lifecycle.ts":{"bytesInOutput":3511},"packages/common/async/src/task-scheduling.ts":{"bytesInOutput":3142},"packages/common/async/src/track-leaks.ts":{"bytesInOutput":2149},"packages/common/async/src/push-iterable.ts":{"bytesInOutput":1402},"packages/common/async/src/sink.ts":{"bytesInOutput":285},"packages/common/async/src/stream-to-array.ts":{"bytesInOutput":967},"packages/common/async/src/test-stream.ts":{"bytesInOutput":925},"packages/common/async/src/testing.ts":{"bytesInOutput":587},"packages/common/async/src/timer.ts":{"bytesInOutput":1054},"packages/common/async/src/until.ts":{"bytesInOutput":760},"packages/common/async/src/update-scheduler.ts":{"bytesInOutput":1855}},"bytes":41320}}}
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/cleanup.ts":{"bytes":5335,"imports":[{"path":"@dxos/util","kind":"import-statement","external":true}],"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":39310,"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/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/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":6582,"imports":[{"path":"@dxos/util","kind":"import-statement","external":true}],"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":15693,"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/persistent-lifecycle.ts":{"bytes":12924,"imports":[{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"packages/common/async/src/mutex.ts","kind":"import-statement","original":"./mutex"},{"path":"packages/common/async/src/task-scheduling.ts","kind":"import-statement","original":"./task-scheduling"},{"path":"packages/common/async/src/timeout.ts","kind":"import-statement","original":"./timeout"}],"format":"esm"},"packages/common/async/src/push-iterable.ts":{"bytes":6055,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"packages/common/async/src/trigger.ts","kind":"import-statement","original":"./trigger"}],"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/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/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/timer.ts":{"bytes":6062,"imports":[{"path":"packages/common/async/src/events.ts","kind":"import-statement","original":"./events"}],"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/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":2731,"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/cleanup.ts","kind":"import-statement","original":"./cleanup"},{"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/mutex.ts","kind":"import-statement","original":"./mutex"},{"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/persistent-lifecycle.ts","kind":"import-statement","original":"./persistent-lifecycle"},{"path":"packages/common/async/src/push-iterable.ts","kind":"import-statement","original":"./push-iterable"},{"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/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/testing.ts","kind":"import-statement","original":"./testing"},{"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/track-leaks.ts","kind":"import-statement","original":"./track-leaks"},{"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/update-scheduler.ts","kind":"import-statement","original":"./update-scheduler"}],"format":"esm"}},"outputs":{"packages/common/async/dist/lib/node-esm/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":96484},"packages/common/async/dist/lib/node-esm/index.mjs":{"imports":[{"path":"@dxos/util","kind":"import-statement","external":true},{"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":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/debug","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/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/log","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":"@dxos/invariant","kind":"import-statement","external":true},{"path":"node:stream","kind":"import-statement","external":true}],"exports":["CancellableObservableProvider","DeferredTask","Event","MulticastObservable","Mutex","MutexGuard","Observable","ObservableProvider","PersistentLifecycle","PushStream","SubscriptionList","SubscriptionSet","TestStream","TimeoutError","Timer","Trigger","TriggerState","UpdateScheduler","addEventListener","addListener","asyncChain","asyncReturn","asyncTimeout","combine","createPromiseFromCallback","debounce","dumpLeaks","latch","makePushIterable","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/cleanup.ts":{"bytesInOutput":843},"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":8580},"packages/common/async/src/latch.ts":{"bytesInOutput":987},"packages/common/async/src/mutex.ts":{"bytesInOutput":2444},"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/persistent-lifecycle.ts":{"bytesInOutput":3511},"packages/common/async/src/task-scheduling.ts":{"bytesInOutput":3142},"packages/common/async/src/track-leaks.ts":{"bytesInOutput":2149},"packages/common/async/src/push-iterable.ts":{"bytesInOutput":1402},"packages/common/async/src/sink.ts":{"bytesInOutput":285},"packages/common/async/src/stream-to-array.ts":{"bytesInOutput":967},"packages/common/async/src/test-stream.ts":{"bytesInOutput":925},"packages/common/async/src/testing.ts":{"bytesInOutput":587},"packages/common/async/src/timer.ts":{"bytesInOutput":1054},"packages/common/async/src/until.ts":{"bytesInOutput":760},"packages/common/async/src/update-scheduler.ts":{"bytesInOutput":1855}},"bytes":41513}}}
@@ -1,6 +1,15 @@
1
1
  import { type PrimitiveProjection } from '@dxos/util';
2
2
  export type CleanupFn = () => void;
3
+ /**
4
+ * Combine multiple cleanup functions into a single cleanup function.
5
+ * Can be used in effect hooks in conjunction with `addEventListener`.
6
+ */
3
7
  export declare const combine: (...cleanupFns: CleanupFn[]) => CleanupFn;
8
+ /**
9
+ * Add the event listener and return a cleanup function.
10
+ * Can be used in effect hooks in conjunction with `combine`.
11
+ */
12
+ export declare const addEventListener: <T extends Event = Event>(el: HTMLElement | Window, event: string, handler: EventListenerOrEventListenerObject | ((event: T) => void), options?: boolean | AddEventListenerOptions) => CleanupFn;
4
13
  export declare class SubscriptionList {
5
14
  private readonly _cleanups;
6
15
  add(cb: CleanupFn): this;
@@ -1 +1 @@
1
- {"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../../src/cleanup.ts"],"names":[],"mappings":"AAIA,OAAO,EAAc,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAElE,MAAM,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC;AAEnC,eAAO,MAAM,OAAO,kBAAmB,SAAS,EAAE,KAAG,SAIpD,CAAC;AAEF,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmB;IAE7C,GAAG,CAAC,EAAE,EAAE,SAAS;IAKjB,KAAK;CAIN;AAED,qBAAa,eAAe,CAAC,CAAC,GAAG,GAAG;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2B;gBAE3C,aAAa,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAIjD,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,SAAS;IAKzB,KAAK;CAIN"}
1
+ {"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../../src/cleanup.ts"],"names":[],"mappings":"AAIA,OAAO,EAAc,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAElE,MAAM,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC;AAEnC;;;GAGG;AACH,eAAO,MAAM,OAAO,kBAAmB,SAAS,EAAE,KAAG,SAIpD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,KAAK,cAC1C,WAAW,GAAG,MAAM,SACjB,MAAM,WACJ,kCAAkC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC,YACxD,OAAO,GAAG,uBAAuB,KAC1C,SAGF,CAAC;AAEF,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmB;IAE7C,GAAG,CAAC,EAAE,EAAE,SAAS;IAKjB,KAAK;CAIN;AAED,qBAAa,eAAe,CAAC,CAAC,GAAG,GAAG;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2B;gBAE3C,aAAa,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAIjD,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,SAAS;IAKzB,KAAK;CAIN"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/async",
3
- "version": "0.8.1",
3
+ "version": "0.8.2-main.f081794",
4
4
  "description": "Async utilities.",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -29,12 +29,12 @@
29
29
  "dependencies": {
30
30
  "zen-observable": "^0.10.0",
31
31
  "zen-push": "^0.3.1",
32
- "@dxos/context": "0.8.1",
33
- "@dxos/debug": "0.8.1",
34
- "@dxos/log": "0.8.1",
35
- "@dxos/invariant": "0.8.1",
36
- "@dxos/util": "0.8.1",
37
- "@dxos/node-std": "0.8.1"
32
+ "@dxos/context": "0.8.2-main.f081794",
33
+ "@dxos/debug": "0.8.2-main.f081794",
34
+ "@dxos/invariant": "0.8.2-main.f081794",
35
+ "@dxos/log": "0.8.2-main.f081794",
36
+ "@dxos/node-std": "0.8.2-main.f081794",
37
+ "@dxos/util": "0.8.2-main.f081794"
38
38
  },
39
39
  "devDependencies": {
40
40
  "@types/zen-observable": "^0.8.3"
package/src/cleanup.ts CHANGED
@@ -6,12 +6,30 @@ import { ComplexMap, type PrimitiveProjection } from '@dxos/util';
6
6
 
7
7
  export type CleanupFn = () => void;
8
8
 
9
+ /**
10
+ * Combine multiple cleanup functions into a single cleanup function.
11
+ * Can be used in effect hooks in conjunction with `addEventListener`.
12
+ */
9
13
  export const combine = (...cleanupFns: CleanupFn[]): CleanupFn => {
10
14
  return () => {
11
15
  cleanupFns.forEach((cleanupFn) => cleanupFn());
12
16
  };
13
17
  };
14
18
 
19
+ /**
20
+ * Add the event listener and return a cleanup function.
21
+ * Can be used in effect hooks in conjunction with `combine`.
22
+ */
23
+ export const addEventListener = <T extends Event = Event>(
24
+ el: HTMLElement | Window,
25
+ event: string,
26
+ handler: EventListenerOrEventListenerObject | ((event: T) => void),
27
+ options?: boolean | AddEventListenerOptions,
28
+ ): CleanupFn => {
29
+ el.addEventListener(event, handler as EventListenerOrEventListenerObject, options);
30
+ return () => el.removeEventListener(event, handler as EventListenerOrEventListenerObject, options);
31
+ };
32
+
15
33
  export class SubscriptionList {
16
34
  private readonly _cleanups: CleanupFn[] = [];
17
35