diff --git a/.changeset/friendly-zoos-fix.md b/.changeset/friendly-zoos-fix.md new file mode 100644 index 0000000..c5179c5 --- /dev/null +++ b/.changeset/friendly-zoos-fix.md @@ -0,0 +1,5 @@ +--- +"@effect-rx/rx": patch +--- + +expose registry dispose & reset diff --git a/packages/rx/src/Registry.ts b/packages/rx/src/Registry.ts index efe3e01..de27289 100644 --- a/packages/rx/src/Registry.ts +++ b/packages/rx/src/Registry.ts @@ -27,6 +27,8 @@ export interface Registry { readonly refresh: Rx.Rx.RefreshRxSync readonly set: Rx.Rx.Set readonly subscribe: Rx.Rx.Subscribe + readonly reset: () => void + readonly dispose: () => void } /** diff --git a/packages/rx/src/internal/registry.ts b/packages/rx/src/internal/registry.ts index 935637b..2deef0e 100644 --- a/packages/rx/src/internal/registry.ts +++ b/packages/rx/src/internal/registry.ts @@ -180,9 +180,7 @@ class RegistryImpl implements Registry.Registry { }) } - dispose(): void { - this.disposed = true - + reset(): void { this.timeoutBuckets.forEach(([, handle]) => clearTimeout(handle)) this.timeoutBuckets.clear() this.nodeTimeoutBucket.clear() @@ -190,6 +188,11 @@ class RegistryImpl implements Registry.Registry { this.nodes.forEach((node) => node.remove()) this.nodes.clear() } + + dispose(): void { + this.disposed = true + this.reset() + } } const enum NodeFlags {