jrx 0.3.0-alpha.7 → 0.3.0-alpha.8

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/README.md CHANGED
@@ -341,6 +341,8 @@ function loadThing() {
341
341
  }
342
342
  ```
343
343
 
344
+ If `value` is itself a `Disposable`, disposing the returned value disposes `value` first, then `disposable`.
345
+
344
346
  ## Cleanup Pattern
345
347
 
346
348
  All effect functions return a `Disposable` object that stops the effect and runs any pending cleanup:
package/index.d.ts CHANGED
@@ -28,5 +28,5 @@ export declare function createTransition(cb: (progress: number) => undefined | D
28
28
  [Symbol.dispose](): void;
29
29
  };
30
30
  export declare function assignDispose<T extends object>(value: T, disposable: Disposable): T & {
31
- [Symbol.dispose]: () => void;
31
+ [Symbol.dispose](): void;
32
32
  };
package/index.js CHANGED
@@ -129,7 +129,11 @@ export function createTransition(cb, durationMs) {
129
129
  }
130
130
  }
131
131
  export function assignDispose(value, disposable) {
132
+ const valueDispose = value?.[Symbol.dispose]?.bind(value);
132
133
  return Object.assign(value, {
133
- [Symbol.dispose]: disposable[Symbol.dispose].bind(disposable),
134
+ [Symbol.dispose]() {
135
+ valueDispose?.();
136
+ disposable[Symbol.dispose]();
137
+ }
134
138
  });
135
139
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jrx",
3
- "version": "0.3.0-alpha.7",
3
+ "version": "0.3.0-alpha.8",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "prepublishOnly": "npx tsc",