@adbl/cells 0.0.18 → 0.0.20

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
@@ -119,6 +119,31 @@ data.listen((userData) => {
119
119
  run(123); // Triggers the async operation
120
120
  ```
121
121
 
122
+ #### Automatic Abort of Previous Operations
123
+
124
+ When you call `run()` multiple times on the same async cell, any previous ongoing async operations are automatically aborted. This prevents race conditions and ensures that only the result of the latest `run()` call is applied.
125
+
126
+ Additionally, the getter function receives an `AbortSignal` via `this.signal`, which you can use to cancel long-running operations or check for abortion:
127
+
128
+ ```javascript
129
+ const fetchUser = Cell.async(async function (userId) {
130
+ const response = await fetch(`https://api.example.com/users/${userId}`, {
131
+ signal: this.signal, // Pass the abort signal to fetch
132
+ });
133
+ return response.json();
134
+ });
135
+
136
+ const { data, run } = fetchUser;
137
+
138
+ // Start first request
139
+ run(123);
140
+
141
+ // Start second request - this aborts the first
142
+ run(456);
143
+
144
+ // Only the result of the second request (user 456) will be applied
145
+ ```
146
+
122
147
  ### 7. Flattening
123
148
 
124
149
  Cells offers utility functions to work with nested cell structures, making it easier to handle complex state shapes:
@@ -192,3 +217,26 @@ cell.listen(callback, {
192
217
  priority: number, // The priority of the effect (higher priority effects run first)
193
218
  });
194
219
  ```
220
+
221
+ ### Explicit Disposal (Contexts)
222
+
223
+ By default, Cells uses `WeakRef` and Garbage Collection to manage memory. This is easy to use but can lead to "ghost computations", where listeners and derived cells keep running for a short time after they are no longer needed.
224
+
225
+ For high-performance scenarios, you can use a `LocalContext` to group dependencies and kill them synchronously.
226
+
227
+ ```javascript
228
+ const ctx = Cell.context();
229
+ const source = Cell.source(1);
230
+
231
+ Cell.runWithContext(ctx, () => {
232
+ // This listener is now bound to 'ctx' (Strong Reference)
233
+ source.listen((val) => console.log(val));
234
+ });
235
+
236
+ source.set(2); // Logs: 2
237
+
238
+ // Synchronously remove all listeners created in that block
239
+ ctx.destroy();
240
+
241
+ source.set(3); // Nothing happens
242
+ ```
@@ -1,3 +1,10 @@
1
+ export class LocalContext {
2
+ /** @type {Map<DerivedCell<any>, Set<Cell<any>>>} */
3
+ derivationSourceMap: Map<DerivedCell<any>, Set<Cell<any>>>;
4
+ /** @type {Map<Cell<any>, Set<Effect<any>>>} */
5
+ effects: Map<Cell<any>, Set<Effect<any>>>;
6
+ destroy(): void;
7
+ }
1
8
  /**
2
9
  * @template {*} out T The type of value stored in the cell
3
10
  *
@@ -55,6 +62,25 @@ export class Cell<out T extends unknown> {
55
62
  * ```
56
63
  */
57
64
  static derived: <U>(callback: () => U) => DerivedCell<U>;
65
+ /**
66
+ * Creates a new LocalContext container.
67
+ * This context can be used to track effects and derived cells created within a specific scope
68
+ * and dispose of them synchronously using `context.destroy()`.
69
+ *
70
+ * @returns {LocalContext} A new LocalContext instance.
71
+ */
72
+ static context: () => LocalContext;
73
+ /**
74
+ * Executes a function within a specific LocalContext.
75
+ * Any effects (`.listen`) or derived cells (`Cell.derived`) created synchronously
76
+ * within the callback will be attached to the provided context.
77
+ *
78
+ * @template T
79
+ * @param {LocalContext} context - The context to bind resources to.
80
+ * @param {() => T} callback - The function to execute.
81
+ * @returns {T} The return value of the callback.
82
+ */
83
+ static runWithContext: (context: LocalContext, callback: () => T_1) => T_1;
58
84
  /**
59
85
  * @template X
60
86
  * Batches all the effects created to run only once.
@@ -110,10 +136,12 @@ export class Cell<out T extends unknown> {
110
136
  * run('input');
111
137
  */
112
138
  static async<Getter extends (...args: any[]) => Promise<any>, X extends Parameters<Getter>[0] = Parameters<Getter>[0], Y extends Awaited<ReturnType<Getter>> = Awaited<ReturnType<Getter>>>(getter: Getter): AsyncRequestAtoms<Parameters<Getter>[0], Awaited<ReturnType<Getter>>, Getter>;
139
+ /** @type {WeakRef<this> | null} */
140
+ ref: WeakRef<this> | null;
113
141
  /**
114
- * @returns {Array<DerivedCell<any>>}
142
+ * @type {SetLike<DerivedCell<any>>}
115
143
  */
116
- get derivedCells(): Array<DerivedCell<any>>;
144
+ derivations: SetLike<DerivedCell<any>>;
117
145
  /**
118
146
  * @protected @type T
119
147
  */
@@ -184,6 +212,10 @@ export class Cell<out T extends unknown> {
184
212
  * @returns {T} - The current value of the cell.
185
213
  */
186
214
  peek(): T;
215
+ /**
216
+ * @protected
217
+ */
218
+ protected [IsScheduled]: boolean;
187
219
  #private;
188
220
  }
189
221
  /**
@@ -197,24 +229,9 @@ export class DerivedCell<out T extends unknown> extends Cell<T> {
197
229
  * @param {() => T} computedFn - A function that generates the value of the computed.
198
230
  */
199
231
  constructor(computedFn: () => T);
200
- /** @type {WeakRef<this>} */
201
- ref: WeakRef<this>;
202
232
  /** @type {() => T} */
203
233
  computedFn: () => T;
204
- initialized: boolean;
205
- /**
206
- * Listens for changes to the cell, initializing the value if not already done.
207
- * @param {(newValue: T) => void} callback - The function to call when the cell's value changes.
208
- * @param {object} [options] - Optional configuration for listening.
209
- */
210
- listen(callback: (newValue: T) => void, options?: object): () => void;
211
- /**
212
- * Runs the callback and sets up a listener, initializing the cell's value if not already done.
213
- * @param {(newValue: T) => void} callback - The function to call when the cell's value changes.
214
- * @param {object} [options] - Optional configuration for listening and running.
215
- * @returns {*} The result of the parent class's runAndListen method.
216
- */
217
- runAndListen(callback: (newValue: T) => void, options?: object): any;
234
+ [Depth]: any;
218
235
  }
219
236
  /**
220
237
  * @template {*} out T
@@ -289,14 +306,14 @@ export type AsyncRequestAtoms<Input, Output, Getter> = {
289
306
  /**
290
307
  * Triggers the asynchronous request.
291
308
  */
292
- run: Getter extends (...args: infer P) => any ? P["length"] extends 0 ? SimplePromiseFn : PromiseFnWithArgs<P> : SimplePromiseFn;
309
+ run: Getter extends (...args: infer P) => any ? P["length"] extends 0 ? SimplePromiseFn<Output> : PromiseFnWithArgs<P, Output> : SimplePromiseFn<Output>;
293
310
  /**
294
311
  * Triggers the asynchronous request again with an optional new input and optionally changes the loading state.
295
312
  */
296
313
  reload: (newInput?: Input, changeLoadingState?: boolean) => Promise<void>;
297
314
  };
298
- export type SimplePromiseFn = () => Promise<void>;
299
- export type PromiseFnWithArgs<Args extends Array<any>> = (...args: Args) => Promise<void>;
315
+ export type SimplePromiseFn<Output> = () => Promise<Output | null>;
316
+ export type PromiseFnWithArgs<Args extends Array<any>, Output> = (...args: Args) => Promise<Output | null>;
300
317
  export type EffectOptions = {
301
318
  /**
302
319
  * Whether the effect should be removed after the first run.
@@ -333,3 +350,46 @@ export type CellOptions<T> = {
333
350
  */
334
351
  equals?: ((oldValue: T, newValue: T) => boolean) | undefined;
335
352
  };
353
+ export type SetLike<Value extends WeakKey & {
354
+ ref: WeakRef<any> | null;
355
+ }> = InternallyWeakSet<Value> | Set<Value>;
356
+ export type MapLike<Key extends WeakKey & {
357
+ ref: WeakRef<any> | null;
358
+ }, Value> = Map<Key, Value> | WeakMap<Key, Value>;
359
+ /** @template T */
360
+ declare class Effect<T> {
361
+ /**
362
+ * @param {(newValue: T) => void} callback
363
+ * @param {EffectOptions} [options]
364
+ */
365
+ constructor(callback: (newValue: T) => void, options?: EffectOptions);
366
+ /**
367
+ * @type {EffectOptions | undefined}
368
+ */
369
+ options: EffectOptions | undefined;
370
+ /**
371
+ * Returns the callback function, if it still exists.
372
+ * @returns {((newValue: T) => void) | undefined}
373
+ */
374
+ get callback(): ((newValue: T) => void) | undefined;
375
+ #private;
376
+ }
377
+ declare const IsScheduled: unique symbol;
378
+ declare const Depth: unique symbol;
379
+ /**
380
+ * @template {WeakKey & { ref: WeakRef<any> | null }} Value
381
+ * @extends {Set<Value>}
382
+ */
383
+ declare class InternallyWeakSet<Value extends WeakKey & {
384
+ ref: WeakRef<any> | null;
385
+ }> {
386
+ /** @param {Value} value */
387
+ add(value: Value): this;
388
+ /** @param {Value} value */
389
+ delete(value: Value): boolean;
390
+ /** @param {Value} value */
391
+ has(value: Value): boolean;
392
+ [Symbol.iterator](): Generator<Value, void, unknown>;
393
+ #private;
394
+ }
395
+ export {};
@@ -12,17 +12,18 @@
12
12
  * @property {SourceCell<Error | null>} error
13
13
  * Represents the errors returned by the asynchronous request, if any.
14
14
  *
15
- * @property {Getter extends (...args: infer P) => any ? P['length'] extends 0 ? SimplePromiseFn: PromiseFnWithArgs<P> : SimplePromiseFn} run
15
+ * @property {Getter extends (...args: infer P) => any ? P['length'] extends 0 ? SimplePromiseFn<Output>: PromiseFnWithArgs<P, Output> : SimplePromiseFn<Output>} run
16
16
  * Triggers the asynchronous request.
17
17
  *
18
18
  * @property {(newInput?: Input, changeLoadingState?: boolean) => Promise<void>} reload Triggers the asynchronous request again with an optional new input and optionally changes the loading state.
19
19
  */
20
20
  /**
21
- * @typedef {() => Promise<void>} SimplePromiseFn
21
+ * @template Output
22
+ * @typedef {() => Promise<Output | null>} SimplePromiseFn
22
23
  */
23
24
  /**
24
- * @template {Array<any>} Args
25
- * @typedef {(...args: Args) => Promise<void>} PromiseFnWithArgs
25
+ * @template {Array<any>} Args, Output
26
+ * @typedef {(...args: Args) => Promise<Output | null>} PromiseFnWithArgs
26
27
  */
27
28
  /**
28
29
  * @typedef {object} EffectOptions
@@ -61,20 +62,70 @@ let BATCH_NESTING_LEVEL = 0;
61
62
  */
62
63
  let BATCHED_EFFECTS = new Map();
63
64
  /**
64
- * A value representing the computed values that are currently being calculated.
65
+ * A value representing the computed values that are currently being calculated,
66
+ * and the largest depth encountered.
65
67
  * It is an array so it can keep track of nested computed values.
66
- * @type {DerivedCell<any>[]}
68
+ * @type {[DerivedCell<any>, number][]}
67
69
  */
68
70
  const ACTIVE_DERIVED_CTX = [];
71
+ /**
72
+ * @template {WeakKey & { ref: WeakRef<any> | null }} Value
73
+ * @extends {Set<Value>}
74
+ */
75
+ class InternallyWeakSet {
76
+ /** @type {Set<WeakRef<Value>>} */
77
+ #internal = new Set();
78
+ /** @param {Value} value */
79
+ add(value) {
80
+ if (value.ref === null)
81
+ value.ref = new WeakRef(value);
82
+ this.#internal.add(value.ref);
83
+ return this;
84
+ }
85
+ /** @param {Value} value */
86
+ delete(value) {
87
+ if (value.ref === null)
88
+ return false;
89
+ return this.#internal.delete(value.ref);
90
+ }
91
+ /** @param {Value} value */
92
+ has(value) {
93
+ if (value.ref === null)
94
+ return false;
95
+ return this.#internal.has(value.ref);
96
+ }
97
+ *[Symbol.iterator]() {
98
+ for (const ref of this.#internal) {
99
+ const value = ref.deref();
100
+ if (value)
101
+ yield value;
102
+ else
103
+ this.#internal.delete(ref); // Cleanup dead refs while iterating
104
+ }
105
+ }
106
+ }
107
+ /**
108
+ * @template {WeakKey & { ref: WeakRef<any> | null }} Value
109
+ * @typedef {InternallyWeakSet<Value> | Set<Value>} SetLike
110
+ */
111
+ /**
112
+ * @template {WeakKey & { ref: WeakRef<any> | null }} Key
113
+ * @template Value
114
+ * @typedef {Map<Key, Value> | WeakMap<Key, Value>} MapLike
115
+ */
116
+ const GlobalTrackingContext = {};
117
+ let CurrentTrackingContext = GlobalTrackingContext;
118
+ const Depth = Symbol();
119
+ const IsScheduled = Symbol();
69
120
  /**
70
121
  * Tracks cells that need to be updated during the update cycle.
71
122
  * Cells are added to this stack to be processed and updated sequentially.
72
- * @type {Set<Cell<any>>}
123
+ * @type {Array<Cell<any>>}
73
124
  */
74
- const UPDATE_BUFFER = new Set();
75
- /** @type {WeakMap<Cell<any>, Set<WeakRef<DerivedCell<any>>>>} */
76
- const DERIVED_CELLS = new WeakMap();
125
+ const UPDATE_BUFFER = [];
77
126
  let IS_UPDATING = false;
127
+ /** @type {object[]} */
128
+ const CONTEXT_STACK = [GlobalTrackingContext];
78
129
  /** @type {Error[]} */
79
130
  const cellErrors = [];
80
131
  /**
@@ -88,48 +139,59 @@ const cellErrors = [];
88
139
  */
89
140
  function triggerUpdate() {
90
141
  IS_UPDATING = true;
91
- for (const cell of UPDATE_BUFFER) {
142
+ let currentDepth = 0;
143
+ for (let i = 0; i < UPDATE_BUFFER.length; i++) {
144
+ const cell = UPDATE_BUFFER[i];
92
145
  if (cell instanceof DerivedCell) {
146
+ const depth = cell[Depth];
147
+ if (depth > currentDepth + 1) {
148
+ // Move nodes with higher depths to the end of the array so they
149
+ // are processed last.
150
+ UPDATE_BUFFER.push(cell);
151
+ continue;
152
+ }
153
+ currentDepth = depth;
93
154
  const newValue = cell.computedFn();
94
155
  // @ts-expect-error: wvalue is protected.
95
- if (deepEqual(cell.wvalue, newValue))
156
+ if (deepEqual(cell.wvalue, newValue)) {
157
+ cell[IsScheduled] = false;
96
158
  continue;
159
+ }
97
160
  // @ts-expect-error: wvalue is protected.
98
161
  cell.wvalue = newValue;
99
162
  }
100
163
  // Run computed dependents.
101
- const computedDependents = DERIVED_CELLS.get(cell);
102
- if (computedDependents)
103
- for (const dependent of computedDependents) {
104
- const deref = dependent.deref();
105
- if (deref === undefined) {
106
- computedDependents.delete(dependent);
107
- continue;
108
- }
109
- const computedCell = deref;
110
- if (BATCH_NESTING_LEVEL > 0) {
111
- BATCHED_EFFECTS.set(() => {
112
- if (!computedCell.initialized)
113
- return;
114
- UPDATE_BUFFER.add(computedCell);
115
- }, undefined);
116
- }
117
- else {
118
- if (!computedCell.initialized)
119
- continue;
120
- UPDATE_BUFFER.add(computedCell);
121
- }
122
- }
164
+ const computedDependents = cell.derivations;
165
+ for (const computedCell of computedDependents) {
166
+ if (computedCell[IsScheduled])
167
+ continue;
168
+ if (BATCH_NESTING_LEVEL > 0)
169
+ BATCHED_EFFECTS.set(() => UPDATE_BUFFER.push(computedCell), undefined);
170
+ else
171
+ UPDATE_BUFFER.push(computedCell);
172
+ computedCell[IsScheduled] = true;
173
+ }
174
+ // Check the last cell.
175
+ const last = UPDATE_BUFFER[UPDATE_BUFFER.length - 1];
176
+ if (last instanceof DerivedCell && last[Depth] - 1 > currentDepth) {
177
+ currentDepth = last[Depth] - 1;
178
+ }
179
+ }
180
+ for (const cell of UPDATE_BUFFER) {
123
181
  // @ts-expect-error: Cell.update is protected.
124
- cell.update();
182
+ if (cell[IsScheduled])
183
+ cell.update();
184
+ cell[IsScheduled] = false;
125
185
  }
126
- UPDATE_BUFFER.clear();
186
+ UPDATE_BUFFER.length = 0;
127
187
  IS_UPDATING = false;
128
188
  throwAnyErrors();
129
189
  }
130
190
  function throwAnyErrors() {
131
191
  if (cellErrors.length > 0) {
132
192
  const errors = [...cellErrors];
193
+ for (const error of errors)
194
+ console.warn(error);
133
195
  cellErrors.length = 0;
134
196
  throw new CellUpdateError(errors);
135
197
  }
@@ -188,6 +250,61 @@ class Effect {
188
250
  return this.#callback;
189
251
  }
190
252
  }
253
+ export class LocalContext {
254
+ /** @type {Map<DerivedCell<any>, Set<Cell<any>>>} */
255
+ derivationSourceMap = new Map();
256
+ /** @type {Map<Cell<any>, Set<Effect<any>>>} */
257
+ effects = new Map();
258
+ destroy() {
259
+ if (CONTEXT_STACK.includes(this)) {
260
+ throw new Error('Cannot destroy a context inside its callback.');
261
+ }
262
+ for (const [derivation, sources] of this.derivationSourceMap) {
263
+ for (const source of sources) {
264
+ source.derivations.delete(derivation);
265
+ }
266
+ }
267
+ for (const [cell, effects] of this.effects) {
268
+ if (cell instanceof DerivedCell && this.derivationSourceMap.has(cell)) {
269
+ // There is no point to ignoring the listener, since it will be disposed
270
+ // and unreachable on the graph anyway.
271
+ continue;
272
+ }
273
+ for (const effect of effects) {
274
+ if (effect.callback !== undefined)
275
+ cell.ignore(effect.callback);
276
+ }
277
+ }
278
+ this.derivationSourceMap.clear();
279
+ this.effects.clear();
280
+ }
281
+ }
282
+ /**
283
+ * @template T
284
+ * @param {Cell<T>} cell
285
+ * @param {Effect<T>} effectContainer
286
+ */
287
+ function addEffectToCurrentContext(cell, effectContainer) {
288
+ if (!(CurrentTrackingContext instanceof LocalContext))
289
+ return;
290
+ let effectStore = CurrentTrackingContext.effects.get(cell);
291
+ if (effectStore === undefined) {
292
+ effectStore = new Set();
293
+ CurrentTrackingContext.effects.set(cell, effectStore);
294
+ }
295
+ effectStore.add(effectContainer);
296
+ }
297
+ /**
298
+ * @param {LocalContext} context
299
+ */
300
+ function pushLocalContext(context) {
301
+ CONTEXT_STACK.push(context);
302
+ CurrentTrackingContext = context;
303
+ }
304
+ function popLocalContext() {
305
+ CONTEXT_STACK.pop();
306
+ CurrentTrackingContext = CONTEXT_STACK[CONTEXT_STACK.length - 1];
307
+ }
191
308
  /**
192
309
  * @template {*} out T The type of value stored in the cell
193
310
  *
@@ -208,29 +325,27 @@ class Effect {
208
325
  * ```
209
326
  */
210
327
  export class Cell {
328
+ /**
329
+ * @protected
330
+ */
331
+ [IsScheduled] = false;
211
332
  /**
212
333
  * @type {Array<Effect<T>>}
213
334
  */
214
335
  #effects = [];
336
+ /** @type {WeakRef<this> | null} */
337
+ ref = null;
215
338
  constructor() {
216
339
  if (new.target === Cell) {
217
340
  throw new Error('Cell should not be instantiated directly. Use `Cell.source` or `Cell.derived` instead.');
218
341
  }
219
- }
220
- /**
221
- * @returns {Array<DerivedCell<any>>}
222
- */
223
- get derivedCells() {
224
- const dependents = DERIVED_CELLS.get(this);
225
- const cells = [];
226
- if (dependents) {
227
- for (const cell of dependents) {
228
- const cellDeref = cell.deref();
229
- if (cellDeref)
230
- cells.push(cellDeref);
231
- }
232
- }
233
- return cells;
342
+ /**
343
+ * @type {SetLike<DerivedCell<any>>}
344
+ */
345
+ this.derivations =
346
+ CurrentTrackingContext === GlobalTrackingContext
347
+ ? new InternallyWeakSet()
348
+ : new Set();
234
349
  }
235
350
  /**
236
351
  * @protected @type T
@@ -269,20 +384,24 @@ export class Cell {
269
384
  * @protected @type {T}
270
385
  */
271
386
  get revalued() {
272
- const currentlyComputedValue = ACTIVE_DERIVED_CTX[ACTIVE_DERIVED_CTX.length - 1];
273
- if (currentlyComputedValue === undefined) {
387
+ const ctx = ACTIVE_DERIVED_CTX[ACTIVE_DERIVED_CTX.length - 1];
388
+ if (ctx === undefined) {
274
389
  return this.wvalue;
275
390
  }
276
- let dependents = DERIVED_CELLS.get(this);
277
- if (dependents === undefined) {
278
- dependents = new Set();
279
- DERIVED_CELLS.set(this, dependents);
280
- }
281
- const isAlreadySubscribed = dependents?.has(currentlyComputedValue.ref);
391
+ const [currentlyComputedValue] = ctx;
392
+ const isAlreadySubscribed = this.derivations.has(currentlyComputedValue);
282
393
  if (isAlreadySubscribed) {
283
394
  return this.wvalue;
284
395
  }
285
- dependents.add(currentlyComputedValue.ref);
396
+ if (this instanceof DerivedCell && this[Depth] > ctx[1]) {
397
+ ctx[1] = this[Depth];
398
+ }
399
+ this.derivations.add(currentlyComputedValue);
400
+ if (CurrentTrackingContext instanceof LocalContext) {
401
+ CurrentTrackingContext.derivationSourceMap
402
+ .get(currentlyComputedValue)
403
+ ?.add(this);
404
+ }
286
405
  return this.wvalue;
287
406
  }
288
407
  /**
@@ -312,7 +431,9 @@ export class Cell {
312
431
  return effect.callback === callback;
313
432
  });
314
433
  if (!isAlreadySubscribed) {
315
- this.#effects.push(new Effect(effect, options));
434
+ const effectContainer = new Effect(effect, options);
435
+ this.#effects.push(effectContainer);
436
+ addEffectToCurrentContext(this, effectContainer);
316
437
  }
317
438
  this.#effects.sort((a, b) => {
318
439
  const aPriority = a.options?.priority ?? 0;
@@ -355,7 +476,9 @@ export class Cell {
355
476
  return e.callback === callback;
356
477
  });
357
478
  if (!isAlreadySubscribed) {
358
- this.#effects.push(new Effect(cb, options));
479
+ const effectContainer = new Effect(cb, options);
480
+ this.#effects.push(effectContainer);
481
+ addEffectToCurrentContext(this, effectContainer);
359
482
  }
360
483
  this.#effects.sort((a, b) => {
361
484
  const aPriority = a.options?.priority ?? 0;
@@ -478,6 +601,33 @@ export class Cell {
478
601
  * ```
479
602
  */
480
603
  static derived = (callback) => new DerivedCell(callback);
604
+ /**
605
+ * Creates a new LocalContext container.
606
+ * This context can be used to track effects and derived cells created within a specific scope
607
+ * and dispose of them synchronously using `context.destroy()`.
608
+ *
609
+ * @returns {LocalContext} A new LocalContext instance.
610
+ */
611
+ static context = () => new LocalContext();
612
+ /**
613
+ * Executes a function within a specific LocalContext.
614
+ * Any effects (`.listen`) or derived cells (`Cell.derived`) created synchronously
615
+ * within the callback will be attached to the provided context.
616
+ *
617
+ * @template T
618
+ * @param {LocalContext} context - The context to bind resources to.
619
+ * @param {() => T} callback - The function to execute.
620
+ * @returns {T} The return value of the callback.
621
+ */
622
+ static runWithContext = (context, callback) => {
623
+ pushLocalContext(context);
624
+ try {
625
+ return callback();
626
+ }
627
+ finally {
628
+ popLocalContext();
629
+ }
630
+ };
481
631
  /**
482
632
  * @template X
483
633
  * Batches all the effects created to run only once.
@@ -527,10 +677,6 @@ export class Cell {
527
677
  static flatten = (value) => {
528
678
  if (value instanceof Cell) {
529
679
  if (value instanceof DerivedCell) {
530
- if (value.initialized) {
531
- return Cell.flatten(value.wvalue);
532
- }
533
- value.setValue(value.computedFn());
534
680
  return Cell.flatten(value.wvalue);
535
681
  }
536
682
  return Cell.flatten(value.wvalue);
@@ -590,14 +736,23 @@ export class Cell {
590
736
  const error = Cell.source(/** @type {Error | null} */ (null));
591
737
  /** @type {X | undefined} */
592
738
  let initialInput;
739
+ /** @type {AbortController | undefined} */
740
+ let controller;
593
741
  async function run(input = initialInput) {
742
+ if (controller)
743
+ controller.abort();
744
+ controller = new AbortController();
594
745
  pending.set(true);
595
746
  error.set(null);
596
747
  data.set(null);
597
748
  await Cell.batch(async () => {
749
+ const currentController = controller;
598
750
  try {
599
751
  initialInput = input;
600
- const result = await getter(/** @type {X} */ (input));
752
+ const _input = /** @type {X} */ (input);
753
+ const result = await getter.bind(currentController)(_input);
754
+ if (currentController?.signal.aborted)
755
+ return;
601
756
  data.set(result);
602
757
  }
603
758
  catch (e) {
@@ -608,37 +763,42 @@ export class Cell {
608
763
  throw e;
609
764
  }
610
765
  }
611
- finally {
612
- pending.set(false);
613
- }
766
+ pending.set(false);
614
767
  });
768
+ return data.get();
615
769
  }
616
770
  /**
617
771
  * @param {X} [newInput]
618
772
  * @param {boolean} [changeLoadingState]
619
773
  */
620
774
  async function reload(newInput, changeLoadingState = true) {
775
+ if (controller)
776
+ controller.abort();
777
+ controller = new AbortController();
621
778
  if (changeLoadingState) {
622
779
  pending.set(true);
623
780
  }
624
- try {
625
- const result = await getter(
626
- /** @type {X} */ (newInput ?? initialInput));
627
- data.set(result);
628
- }
629
- catch (e) {
630
- if (e instanceof Error) {
631
- error.set(e);
781
+ await Cell.batch(async () => {
782
+ const currentController = controller;
783
+ try {
784
+ const result = await getter.bind(currentController)(
785
+ /** @type {X} */ (newInput ?? initialInput));
786
+ if (currentController?.signal.aborted)
787
+ return;
788
+ data.set(result);
632
789
  }
633
- else {
634
- throw e;
790
+ catch (e) {
791
+ if (e instanceof Error) {
792
+ error.set(e);
793
+ }
794
+ else {
795
+ throw e;
796
+ }
635
797
  }
636
- }
637
- finally {
638
798
  if (changeLoadingState) {
639
799
  pending.set(false);
640
800
  }
641
- }
801
+ });
642
802
  }
643
803
  return {
644
804
  pending,
@@ -657,15 +817,18 @@ export class Cell {
657
817
  * @extends {Cell<T>}
658
818
  */
659
819
  export class DerivedCell extends Cell {
820
+ [Depth] = 0;
660
821
  /**
661
822
  * @param {() => T} computedFn - A function that generates the value of the computed.
662
823
  */
663
824
  constructor(computedFn) {
664
825
  super();
665
- this.ref = new WeakRef(this);
826
+ if (CurrentTrackingContext instanceof LocalContext) {
827
+ CurrentTrackingContext.derivationSourceMap.set(this, new Set());
828
+ }
666
829
  // Ensures that the cell is derived every time the computing function is called.
667
830
  const derivationWrapper = () => {
668
- ACTIVE_DERIVED_CTX.push(this);
831
+ ACTIVE_DERIVED_CTX.push([this, 0]);
669
832
  let value = this.wvalue;
670
833
  try {
671
834
  value = computedFn();
@@ -674,56 +837,25 @@ export class DerivedCell extends Cell {
674
837
  if (e instanceof Error)
675
838
  cellErrors.push(e);
676
839
  }
677
- ACTIVE_DERIVED_CTX.pop();
840
+ const [, depth] = /** @type {[this, number]} */ (ACTIVE_DERIVED_CTX.pop());
841
+ if (depth + 1 > this[Depth])
842
+ this[Depth] = depth + 1;
678
843
  return value;
679
844
  };
845
+ this.setValue(derivationWrapper());
680
846
  this.computedFn = /** @type {() => T} */ (derivationWrapper);
681
- this.initialized = false;
847
+ throwAnyErrors();
682
848
  }
683
849
  /** @type {() => T} */
684
850
  computedFn;
685
- /** @type {WeakRef<this>} */
686
- ref;
687
851
  /**
688
852
  * Gets the current value of the derived cell, computing it if necessary,
689
853
  * and registers it as a dependency if called within another derived cell computation.
690
854
  * @returns {T} The value of the Cell.
691
855
  */
692
856
  get() {
693
- if (!this.initialized) {
694
- this.initialized = true;
695
- this.setValue(this.computedFn());
696
- throwAnyErrors();
697
- }
698
857
  return this.revalued;
699
858
  }
700
- /**
701
- * Listens for changes to the cell, initializing the value if not already done.
702
- * @param {(newValue: T) => void} callback - The function to call when the cell's value changes.
703
- * @param {object} [options] - Optional configuration for listening.
704
- */
705
- listen(callback, options) {
706
- if (!this.initialized) {
707
- this.initialized = true;
708
- this.setValue(this.computedFn());
709
- throwAnyErrors();
710
- }
711
- return super.listen(callback, options);
712
- }
713
- /**
714
- * Runs the callback and sets up a listener, initializing the cell's value if not already done.
715
- * @param {(newValue: T) => void} callback - The function to call when the cell's value changes.
716
- * @param {object} [options] - Optional configuration for listening and running.
717
- * @returns {*} The result of the parent class's runAndListen method.
718
- */
719
- runAndListen(callback, options) {
720
- if (!this.initialized) {
721
- this.initialized = true;
722
- this.setValue(this.computedFn());
723
- throwAnyErrors();
724
- }
725
- return super.runAndListen(callback, options);
726
- }
727
859
  }
728
860
  /**
729
861
  * @template {*} out T
@@ -783,7 +915,8 @@ export class SourceCell extends Cell {
783
915
  if (isEqual)
784
916
  return;
785
917
  this.setValue(value);
786
- UPDATE_BUFFER.add(this);
918
+ this[IsScheduled] = true;
919
+ UPDATE_BUFFER.push(this);
787
920
  if (!IS_UPDATING)
788
921
  triggerUpdate();
789
922
  }
@@ -814,7 +947,8 @@ export class SourceCell extends Cell {
814
947
  return (...args) => {
815
948
  // @ts-expect-error: Direct access is faster than Reflection here.
816
949
  const result = target[prop](...args);
817
- UPDATE_BUFFER.add(this);
950
+ UPDATE_BUFFER.push(this);
951
+ this[IsScheduled] = true;
818
952
  if (!IS_UPDATING)
819
953
  triggerUpdate();
820
954
  return result;
@@ -835,7 +969,8 @@ export class SourceCell extends Cell {
835
969
  if (!isEqual) {
836
970
  // @ts-expect-error: dynamic object access.
837
971
  target[prop] = value;
838
- UPDATE_BUFFER.add(this);
972
+ UPDATE_BUFFER.push(this);
973
+ this[IsScheduled] = true;
839
974
  if (!IS_UPDATING) {
840
975
  triggerUpdate();
841
976
  }
@@ -877,53 +1012,56 @@ export class CellUpdateError extends Error {
877
1012
  function deepEqual(a, b) {
878
1013
  if (a === b)
879
1014
  return true;
880
- if (typeof a !== typeof b ||
1015
+ if (a === null ||
881
1016
  typeof a !== 'object' ||
882
- a === null ||
883
- b === null)
1017
+ b === null ||
1018
+ typeof b !== 'object') {
884
1019
  return false;
885
- if (a instanceof Date) {
886
- if (!(b instanceof Date)) {
887
- return false;
888
- }
889
- if (a.getTime() !== b.getTime()) {
890
- return false;
891
- }
892
1020
  }
1021
+ if (a.constructor !== b.constructor)
1022
+ return false;
1023
+ if (a instanceof Date)
1024
+ return a.getTime() === b.getTime();
1025
+ if (a instanceof RegExp)
1026
+ return a.source === b.source && a.flags === b.flags;
893
1027
  if (a instanceof Map) {
894
- if (!(b instanceof Map)) {
1028
+ if (a.size !== b.size)
895
1029
  return false;
1030
+ for (const [key, value] of a) {
1031
+ if (!b.has(key) || !deepEqual(value, b.get(key))) {
1032
+ return false;
1033
+ }
896
1034
  }
897
- if (a.size !== b.size) {
1035
+ return true;
1036
+ }
1037
+ if (a instanceof Set) {
1038
+ if (a.size !== b.size)
898
1039
  return false;
899
- }
900
- for (const [key, value] of a.entries()) {
901
- if (!deepEqual(b.get(key), value)) {
1040
+ for (const value of a) {
1041
+ if (!b.has(value))
902
1042
  return false;
903
- }
904
1043
  }
1044
+ return true;
905
1045
  }
906
1046
  if (Array.isArray(a)) {
907
- const aLength = a.length;
908
- if (!Array.isArray(b) || aLength !== b.length)
1047
+ const length = a.length;
1048
+ if (length !== b.length)
909
1049
  return false;
910
- for (let i = 0; i < aLength; i++) {
1050
+ for (let i = 0; i < length; i++) {
911
1051
  if (!deepEqual(a[i], b[i]))
912
1052
  return false;
913
1053
  }
1054
+ return true;
914
1055
  }
915
- else {
916
- const keysA = Object.keys(a);
917
- const keysB = Object.keys(b);
918
- const keysALength = keysA.length;
919
- if (keysALength !== keysB.length)
1056
+ const keysA = Object.keys(a);
1057
+ const length = keysA.length;
1058
+ if (Object.keys(b).length !== length)
1059
+ return false;
1060
+ for (let i = 0; i < length; i++) {
1061
+ const key = keysA[i];
1062
+ if (!Object.prototype.hasOwnProperty.call(b, key) ||
1063
+ !deepEqual(a[key], b[key])) {
920
1064
  return false;
921
- for (let i = 0; i < keysALength; i++) {
922
- const key = keysA[i];
923
- if (a === b)
924
- return true;
925
- if (!(key in b) || !deepEqual(a[key], b[key]))
926
- return false;
927
1065
  }
928
1066
  }
929
1067
  return true;
@@ -1 +1 @@
1
- {"version":3,"file":"classes.js","sourceRoot":"","sources":["../../library/classes.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"classes.js","sourceRoot":"","sources":["../../library/classes.js"],"names":[],"mappings":"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"}
@@ -1,16 +1,3 @@
1
+ export * from "./classes.js";
1
2
  export default Cell;
2
- /**
3
- * Represents a partial map of cells, where each key in the object type `T` is mapped to either a `Cell<T[key]>` or the raw type `T[key]`.
4
- * This type can be used to represent a partial set of cells for an object, where some properties are represented as cells and others are the raw values.
5
- */
6
- export type PartialCellMap<T extends object> = { [key in keyof T]: Cell<T[key]> | T[key]; };
7
- /**
8
- * Represents a full set of cells for an object,
9
- * where all properties are represented as cells.
10
- */
11
- export type CellMap<T extends object> = { [key in keyof T]: Cell<T[key]>; };
12
- import { SourceCell } from './classes.js';
13
- import { DerivedCell } from './classes.js';
14
3
  import { Cell } from './classes.js';
15
- import { CellUpdateError } from './classes.js';
16
- export { SourceCell, DerivedCell, Cell, CellUpdateError };
@@ -1,17 +1,5 @@
1
1
  /// <reference types="./index.d.ts" />
2
- import { DerivedCell, SourceCell, Cell, CellUpdateError } from './classes.js';
3
- /**
4
- * Represents a partial map of cells, where each key in the object type `T` is mapped to either a `Cell<T[key]>` or the raw type `T[key]`.
5
- * This type can be used to represent a partial set of cells for an object, where some properties are represented as cells and others are the raw values.
6
- * @template {object} T The object type whose properties are mapped to cells or raw values.
7
- * @typedef {{ [key in keyof T]: Cell<T[key]> | T[key] }} PartialCellMap
8
- */
9
- /**
10
- * Represents a full set of cells for an object,
11
- * where all properties are represented as cells.
12
- * @template {object} T The object type whose properties are mapped to cells.
13
- * @typedef {{ [key in keyof T]: Cell<T[key]> }} CellMap
14
- */
15
- export { SourceCell, DerivedCell, Cell, CellUpdateError };
2
+ export * from './classes.js';
3
+ import { Cell } from './classes.js';
16
4
  export default Cell;
17
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../library/index.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE9E;;;;;GAKG;AAEH;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;AAC1D,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../library/index.js"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,eAAe,IAAI,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adbl/cells",
3
- "version": "0.0.18",
3
+ "version": "0.0.20",
4
4
  "description": "A simple implementation of reactive updates for JavaScript",
5
5
  "main": "index.js",
6
6
  "private": false,