@adbl/cells 0.0.19 → 0.0.21

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
@@ -217,3 +217,26 @@ cell.listen(callback, {
217
217
  priority: number, // The priority of the effect (higher priority effects run first)
218
218
  });
219
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
@@ -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 {};
@@ -62,20 +62,70 @@ let BATCH_NESTING_LEVEL = 0;
62
62
  */
63
63
  let BATCHED_EFFECTS = new Map();
64
64
  /**
65
- * 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.
66
67
  * It is an array so it can keep track of nested computed values.
67
- * @type {DerivedCell<any>[]}
68
+ * @type {[DerivedCell<any>, number][]}
68
69
  */
69
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();
70
120
  /**
71
121
  * Tracks cells that need to be updated during the update cycle.
72
122
  * Cells are added to this stack to be processed and updated sequentially.
73
- * @type {Set<Cell<any>>}
123
+ * @type {Array<Cell<any>>}
74
124
  */
75
- const UPDATE_BUFFER = new Set();
76
- /** @type {WeakMap<Cell<any>, Set<WeakRef<DerivedCell<any>>>>} */
77
- const DERIVED_CELLS = new WeakMap();
125
+ const UPDATE_BUFFER = [];
78
126
  let IS_UPDATING = false;
127
+ /** @type {object[]} */
128
+ const CONTEXT_STACK = [GlobalTrackingContext];
79
129
  /** @type {Error[]} */
80
130
  const cellErrors = [];
81
131
  /**
@@ -89,48 +139,71 @@ const cellErrors = [];
89
139
  */
90
140
  function triggerUpdate() {
91
141
  IS_UPDATING = true;
92
- for (const cell of UPDATE_BUFFER) {
93
- if (cell instanceof DerivedCell) {
94
- const newValue = cell.computedFn();
95
- // @ts-expect-error: wvalue is protected.
96
- if (deepEqual(cell.wvalue, newValue))
97
- continue;
98
- // @ts-expect-error: wvalue is protected.
99
- cell.wvalue = newValue;
100
- }
101
- // Run computed dependents.
102
- const computedDependents = DERIVED_CELLS.get(cell);
103
- if (computedDependents)
104
- for (const dependent of computedDependents) {
105
- const deref = dependent.deref();
106
- if (deref === undefined) {
107
- computedDependents.delete(dependent);
142
+ let currentDepth = 0;
143
+ let lastProcessedCellIndex = 0;
144
+ while (lastProcessedCellIndex < UPDATE_BUFFER.length) {
145
+ for (let i = lastProcessedCellIndex; i < UPDATE_BUFFER.length; i++) {
146
+ const cell = UPDATE_BUFFER[i];
147
+ if (cell instanceof DerivedCell) {
148
+ const depth = cell[Depth];
149
+ if (depth > currentDepth + 1) {
150
+ // Move nodes with higher depths to the end of the array so they
151
+ // are processed last.
152
+ UPDATE_BUFFER.push(cell);
108
153
  continue;
109
154
  }
110
- const computedCell = deref;
111
- if (BATCH_NESTING_LEVEL > 0) {
112
- BATCHED_EFFECTS.set(() => {
113
- if (!computedCell.initialized)
114
- return;
115
- UPDATE_BUFFER.add(computedCell);
116
- }, undefined);
117
- }
118
- else {
119
- if (!computedCell.initialized)
120
- continue;
121
- UPDATE_BUFFER.add(computedCell);
155
+ if (depth > currentDepth)
156
+ currentDepth = depth;
157
+ const newValue = cell.computedFn();
158
+ // @ts-expect-error: wvalue is protected.
159
+ if (deepEqual(cell.wvalue, newValue)) {
160
+ cell[IsScheduled] = false;
161
+ continue;
122
162
  }
163
+ // @ts-expect-error: wvalue is protected.
164
+ cell.wvalue = newValue;
165
+ }
166
+ // Run computed dependents.
167
+ const computedDependents = cell.derivations;
168
+ for (const computedCell of computedDependents) {
169
+ if (computedCell[IsScheduled])
170
+ continue;
171
+ if (BATCH_NESTING_LEVEL > 0)
172
+ BATCHED_EFFECTS.set(() => UPDATE_BUFFER.push(computedCell), undefined);
173
+ else
174
+ UPDATE_BUFFER.push(computedCell);
175
+ computedCell[IsScheduled] = true;
176
+ }
177
+ // Check the last cell.
178
+ const last = UPDATE_BUFFER[UPDATE_BUFFER.length - 1];
179
+ if (last instanceof DerivedCell && last[Depth] - 1 > currentDepth) {
180
+ currentDepth = last[Depth] - 1;
181
+ }
182
+ }
183
+ // A cell can update in another's effect, triggering a rerun
184
+ // of the whole process. Since the UPDATE_BUFFER is the same array,
185
+ // we need to know where to continue iteration from.
186
+ let i = lastProcessedCellIndex;
187
+ lastProcessedCellIndex = UPDATE_BUFFER.length;
188
+ for (; i < UPDATE_BUFFER.length; i++) {
189
+ const cell = UPDATE_BUFFER[i];
190
+ if (cell[IsScheduled]) {
191
+ // @ts-expect-error: Cell.update is protected.
192
+ cell.update();
193
+ cell[IsScheduled] = false;
123
194
  }
124
- // @ts-expect-error: Cell.update is protected.
125
- cell.update();
195
+ }
126
196
  }
127
- UPDATE_BUFFER.clear();
128
197
  IS_UPDATING = false;
198
+ UPDATE_BUFFER.length = 0;
199
+ lastProcessedCellIndex = 0;
129
200
  throwAnyErrors();
130
201
  }
131
202
  function throwAnyErrors() {
132
203
  if (cellErrors.length > 0) {
133
204
  const errors = [...cellErrors];
205
+ for (const error of errors)
206
+ console.warn(error);
134
207
  cellErrors.length = 0;
135
208
  throw new CellUpdateError(errors);
136
209
  }
@@ -189,6 +262,61 @@ class Effect {
189
262
  return this.#callback;
190
263
  }
191
264
  }
265
+ export class LocalContext {
266
+ /** @type {Map<DerivedCell<any>, Set<Cell<any>>>} */
267
+ derivationSourceMap = new Map();
268
+ /** @type {Map<Cell<any>, Set<Effect<any>>>} */
269
+ effects = new Map();
270
+ destroy() {
271
+ if (CONTEXT_STACK.includes(this)) {
272
+ throw new Error('Cannot destroy a context inside its callback.');
273
+ }
274
+ for (const [derivation, sources] of this.derivationSourceMap) {
275
+ for (const source of sources) {
276
+ source.derivations.delete(derivation);
277
+ }
278
+ }
279
+ for (const [cell, effects] of this.effects) {
280
+ if (cell instanceof DerivedCell && this.derivationSourceMap.has(cell)) {
281
+ // There is no point to ignoring the listener, since it will be disposed
282
+ // and unreachable on the graph anyway.
283
+ continue;
284
+ }
285
+ for (const effect of effects) {
286
+ if (effect.callback !== undefined)
287
+ cell.ignore(effect.callback);
288
+ }
289
+ }
290
+ this.derivationSourceMap.clear();
291
+ this.effects.clear();
292
+ }
293
+ }
294
+ /**
295
+ * @template T
296
+ * @param {Cell<T>} cell
297
+ * @param {Effect<T>} effectContainer
298
+ */
299
+ function addEffectToCurrentContext(cell, effectContainer) {
300
+ if (!(CurrentTrackingContext instanceof LocalContext))
301
+ return;
302
+ let effectStore = CurrentTrackingContext.effects.get(cell);
303
+ if (effectStore === undefined) {
304
+ effectStore = new Set();
305
+ CurrentTrackingContext.effects.set(cell, effectStore);
306
+ }
307
+ effectStore.add(effectContainer);
308
+ }
309
+ /**
310
+ * @param {LocalContext} context
311
+ */
312
+ function pushLocalContext(context) {
313
+ CONTEXT_STACK.push(context);
314
+ CurrentTrackingContext = context;
315
+ }
316
+ function popLocalContext() {
317
+ CONTEXT_STACK.pop();
318
+ CurrentTrackingContext = CONTEXT_STACK[CONTEXT_STACK.length - 1];
319
+ }
192
320
  /**
193
321
  * @template {*} out T The type of value stored in the cell
194
322
  *
@@ -209,29 +337,27 @@ class Effect {
209
337
  * ```
210
338
  */
211
339
  export class Cell {
340
+ /**
341
+ * @protected
342
+ */
343
+ [IsScheduled] = false;
212
344
  /**
213
345
  * @type {Array<Effect<T>>}
214
346
  */
215
347
  #effects = [];
348
+ /** @type {WeakRef<this> | null} */
349
+ ref = null;
216
350
  constructor() {
217
351
  if (new.target === Cell) {
218
352
  throw new Error('Cell should not be instantiated directly. Use `Cell.source` or `Cell.derived` instead.');
219
353
  }
220
- }
221
- /**
222
- * @returns {Array<DerivedCell<any>>}
223
- */
224
- get derivedCells() {
225
- const dependents = DERIVED_CELLS.get(this);
226
- const cells = [];
227
- if (dependents) {
228
- for (const cell of dependents) {
229
- const cellDeref = cell.deref();
230
- if (cellDeref)
231
- cells.push(cellDeref);
232
- }
233
- }
234
- return cells;
354
+ /**
355
+ * @type {SetLike<DerivedCell<any>>}
356
+ */
357
+ this.derivations =
358
+ CurrentTrackingContext === GlobalTrackingContext
359
+ ? new InternallyWeakSet()
360
+ : new Set();
235
361
  }
236
362
  /**
237
363
  * @protected @type T
@@ -270,20 +396,24 @@ export class Cell {
270
396
  * @protected @type {T}
271
397
  */
272
398
  get revalued() {
273
- const currentlyComputedValue = ACTIVE_DERIVED_CTX[ACTIVE_DERIVED_CTX.length - 1];
274
- if (currentlyComputedValue === undefined) {
399
+ const ctx = ACTIVE_DERIVED_CTX[ACTIVE_DERIVED_CTX.length - 1];
400
+ if (ctx === undefined) {
275
401
  return this.wvalue;
276
402
  }
277
- let dependents = DERIVED_CELLS.get(this);
278
- if (dependents === undefined) {
279
- dependents = new Set();
280
- DERIVED_CELLS.set(this, dependents);
281
- }
282
- const isAlreadySubscribed = dependents?.has(currentlyComputedValue.ref);
403
+ const [currentlyComputedValue] = ctx;
404
+ const isAlreadySubscribed = this.derivations.has(currentlyComputedValue);
283
405
  if (isAlreadySubscribed) {
284
406
  return this.wvalue;
285
407
  }
286
- dependents.add(currentlyComputedValue.ref);
408
+ if (this instanceof DerivedCell && this[Depth] > ctx[1]) {
409
+ ctx[1] = this[Depth];
410
+ }
411
+ this.derivations.add(currentlyComputedValue);
412
+ if (CurrentTrackingContext instanceof LocalContext) {
413
+ CurrentTrackingContext.derivationSourceMap
414
+ .get(currentlyComputedValue)
415
+ ?.add(this);
416
+ }
287
417
  return this.wvalue;
288
418
  }
289
419
  /**
@@ -313,7 +443,9 @@ export class Cell {
313
443
  return effect.callback === callback;
314
444
  });
315
445
  if (!isAlreadySubscribed) {
316
- this.#effects.push(new Effect(effect, options));
446
+ const effectContainer = new Effect(effect, options);
447
+ this.#effects.push(effectContainer);
448
+ addEffectToCurrentContext(this, effectContainer);
317
449
  }
318
450
  this.#effects.sort((a, b) => {
319
451
  const aPriority = a.options?.priority ?? 0;
@@ -356,7 +488,9 @@ export class Cell {
356
488
  return e.callback === callback;
357
489
  });
358
490
  if (!isAlreadySubscribed) {
359
- this.#effects.push(new Effect(cb, options));
491
+ const effectContainer = new Effect(cb, options);
492
+ this.#effects.push(effectContainer);
493
+ addEffectToCurrentContext(this, effectContainer);
360
494
  }
361
495
  this.#effects.sort((a, b) => {
362
496
  const aPriority = a.options?.priority ?? 0;
@@ -411,13 +545,10 @@ export class Cell {
411
545
  // Run watchers.
412
546
  const wvalue = this.wvalue;
413
547
  const effects = this.#effects;
414
- let len = effects.length;
415
- for (let i = 0; i < len; i++) {
416
- const watcher = effects[i].callback;
548
+ let hasUndefinedEffect = false;
549
+ for (const { callback: watcher } of effects) {
417
550
  if (watcher === undefined) {
418
- effects.splice(i, 1);
419
- i--;
420
- len--;
551
+ hasUndefinedEffect = true;
421
552
  continue;
422
553
  }
423
554
  if (BATCH_NESTING_LEVEL > 0) {
@@ -434,6 +565,9 @@ export class Cell {
434
565
  }
435
566
  }
436
567
  }
568
+ if (hasUndefinedEffect) {
569
+ this.#effects = this.#effects.filter((effect) => effect.callback !== undefined);
570
+ }
437
571
  }
438
572
  /**
439
573
  * Returns the current value of the cell without registering dependencies.
@@ -479,6 +613,33 @@ export class Cell {
479
613
  * ```
480
614
  */
481
615
  static derived = (callback) => new DerivedCell(callback);
616
+ /**
617
+ * Creates a new LocalContext container.
618
+ * This context can be used to track effects and derived cells created within a specific scope
619
+ * and dispose of them synchronously using `context.destroy()`.
620
+ *
621
+ * @returns {LocalContext} A new LocalContext instance.
622
+ */
623
+ static context = () => new LocalContext();
624
+ /**
625
+ * Executes a function within a specific LocalContext.
626
+ * Any effects (`.listen`) or derived cells (`Cell.derived`) created synchronously
627
+ * within the callback will be attached to the provided context.
628
+ *
629
+ * @template T
630
+ * @param {LocalContext} context - The context to bind resources to.
631
+ * @param {() => T} callback - The function to execute.
632
+ * @returns {T} The return value of the callback.
633
+ */
634
+ static runWithContext = (context, callback) => {
635
+ pushLocalContext(context);
636
+ try {
637
+ return callback();
638
+ }
639
+ finally {
640
+ popLocalContext();
641
+ }
642
+ };
482
643
  /**
483
644
  * @template X
484
645
  * Batches all the effects created to run only once.
@@ -528,10 +689,6 @@ export class Cell {
528
689
  static flatten = (value) => {
529
690
  if (value instanceof Cell) {
530
691
  if (value instanceof DerivedCell) {
531
- if (value.initialized) {
532
- return Cell.flatten(value.wvalue);
533
- }
534
- value.setValue(value.computedFn());
535
692
  return Cell.flatten(value.wvalue);
536
693
  }
537
694
  return Cell.flatten(value.wvalue);
@@ -600,26 +757,24 @@ export class Cell {
600
757
  pending.set(true);
601
758
  error.set(null);
602
759
  data.set(null);
603
- await Cell.batch(async () => {
604
- const currentController = controller;
605
- try {
606
- initialInput = input;
607
- const _input = /** @type {X} */ (input);
608
- const result = await getter.bind(currentController)(_input);
609
- if (currentController?.signal.aborted)
610
- return;
611
- data.set(result);
760
+ const currentController = controller;
761
+ try {
762
+ initialInput = input;
763
+ const _input = /** @type {X} */ (input);
764
+ const result = await getter.bind(currentController)(_input);
765
+ if (currentController?.signal.aborted)
766
+ return;
767
+ data.set(result);
768
+ }
769
+ catch (e) {
770
+ if (e instanceof Error) {
771
+ error.set(e);
612
772
  }
613
- catch (e) {
614
- if (e instanceof Error) {
615
- error.set(e);
616
- }
617
- else {
618
- throw e;
619
- }
773
+ else {
774
+ throw e;
620
775
  }
621
- pending.set(false);
622
- });
776
+ }
777
+ pending.set(false);
623
778
  return data.get();
624
779
  }
625
780
  /**
@@ -672,15 +827,18 @@ export class Cell {
672
827
  * @extends {Cell<T>}
673
828
  */
674
829
  export class DerivedCell extends Cell {
830
+ [Depth] = 0;
675
831
  /**
676
832
  * @param {() => T} computedFn - A function that generates the value of the computed.
677
833
  */
678
834
  constructor(computedFn) {
679
835
  super();
680
- this.ref = new WeakRef(this);
836
+ if (CurrentTrackingContext instanceof LocalContext) {
837
+ CurrentTrackingContext.derivationSourceMap.set(this, new Set());
838
+ }
681
839
  // Ensures that the cell is derived every time the computing function is called.
682
840
  const derivationWrapper = () => {
683
- ACTIVE_DERIVED_CTX.push(this);
841
+ ACTIVE_DERIVED_CTX.push([this, 0]);
684
842
  let value = this.wvalue;
685
843
  try {
686
844
  value = computedFn();
@@ -689,56 +847,25 @@ export class DerivedCell extends Cell {
689
847
  if (e instanceof Error)
690
848
  cellErrors.push(e);
691
849
  }
692
- ACTIVE_DERIVED_CTX.pop();
850
+ const [, depth] = /** @type {[this, number]} */ (ACTIVE_DERIVED_CTX.pop());
851
+ if (depth + 1 > this[Depth])
852
+ this[Depth] = depth + 1;
693
853
  return value;
694
854
  };
855
+ this.setValue(derivationWrapper());
695
856
  this.computedFn = /** @type {() => T} */ (derivationWrapper);
696
- this.initialized = false;
857
+ throwAnyErrors();
697
858
  }
698
859
  /** @type {() => T} */
699
860
  computedFn;
700
- /** @type {WeakRef<this>} */
701
- ref;
702
861
  /**
703
862
  * Gets the current value of the derived cell, computing it if necessary,
704
863
  * and registers it as a dependency if called within another derived cell computation.
705
864
  * @returns {T} The value of the Cell.
706
865
  */
707
866
  get() {
708
- if (!this.initialized) {
709
- this.initialized = true;
710
- this.setValue(this.computedFn());
711
- throwAnyErrors();
712
- }
713
867
  return this.revalued;
714
868
  }
715
- /**
716
- * Listens for changes to the cell, initializing the value if not already done.
717
- * @param {(newValue: T) => void} callback - The function to call when the cell's value changes.
718
- * @param {object} [options] - Optional configuration for listening.
719
- */
720
- listen(callback, options) {
721
- if (!this.initialized) {
722
- this.initialized = true;
723
- this.setValue(this.computedFn());
724
- throwAnyErrors();
725
- }
726
- return super.listen(callback, options);
727
- }
728
- /**
729
- * Runs the callback and sets up a listener, initializing the cell's value if not already done.
730
- * @param {(newValue: T) => void} callback - The function to call when the cell's value changes.
731
- * @param {object} [options] - Optional configuration for listening and running.
732
- * @returns {*} The result of the parent class's runAndListen method.
733
- */
734
- runAndListen(callback, options) {
735
- if (!this.initialized) {
736
- this.initialized = true;
737
- this.setValue(this.computedFn());
738
- throwAnyErrors();
739
- }
740
- return super.runAndListen(callback, options);
741
- }
742
869
  }
743
870
  /**
744
871
  * @template {*} out T
@@ -798,7 +925,8 @@ export class SourceCell extends Cell {
798
925
  if (isEqual)
799
926
  return;
800
927
  this.setValue(value);
801
- UPDATE_BUFFER.add(this);
928
+ this[IsScheduled] = true;
929
+ UPDATE_BUFFER.push(this);
802
930
  if (!IS_UPDATING)
803
931
  triggerUpdate();
804
932
  }
@@ -829,7 +957,8 @@ export class SourceCell extends Cell {
829
957
  return (...args) => {
830
958
  // @ts-expect-error: Direct access is faster than Reflection here.
831
959
  const result = target[prop](...args);
832
- UPDATE_BUFFER.add(this);
960
+ UPDATE_BUFFER.push(this);
961
+ this[IsScheduled] = true;
833
962
  if (!IS_UPDATING)
834
963
  triggerUpdate();
835
964
  return result;
@@ -850,7 +979,8 @@ export class SourceCell extends Cell {
850
979
  if (!isEqual) {
851
980
  // @ts-expect-error: dynamic object access.
852
981
  target[prop] = value;
853
- UPDATE_BUFFER.add(this);
982
+ UPDATE_BUFFER.push(this);
983
+ this[IsScheduled] = true;
854
984
  if (!IS_UPDATING) {
855
985
  triggerUpdate();
856
986
  }
@@ -892,53 +1022,56 @@ export class CellUpdateError extends Error {
892
1022
  function deepEqual(a, b) {
893
1023
  if (a === b)
894
1024
  return true;
895
- if (typeof a !== typeof b ||
1025
+ if (a === null ||
896
1026
  typeof a !== 'object' ||
897
- a === null ||
898
- b === null)
1027
+ b === null ||
1028
+ typeof b !== 'object') {
899
1029
  return false;
900
- if (a instanceof Date) {
901
- if (!(b instanceof Date)) {
902
- return false;
903
- }
904
- if (a.getTime() !== b.getTime()) {
905
- return false;
906
- }
907
1030
  }
1031
+ if (a.constructor !== b.constructor)
1032
+ return false;
1033
+ if (a instanceof Date)
1034
+ return a.getTime() === b.getTime();
1035
+ if (a instanceof RegExp)
1036
+ return a.source === b.source && a.flags === b.flags;
908
1037
  if (a instanceof Map) {
909
- if (!(b instanceof Map)) {
1038
+ if (a.size !== b.size)
910
1039
  return false;
1040
+ for (const [key, value] of a) {
1041
+ if (!b.has(key) || !deepEqual(value, b.get(key))) {
1042
+ return false;
1043
+ }
911
1044
  }
912
- if (a.size !== b.size) {
1045
+ return true;
1046
+ }
1047
+ if (a instanceof Set) {
1048
+ if (a.size !== b.size)
913
1049
  return false;
914
- }
915
- for (const [key, value] of a.entries()) {
916
- if (!deepEqual(b.get(key), value)) {
1050
+ for (const value of a) {
1051
+ if (!b.has(value))
917
1052
  return false;
918
- }
919
1053
  }
1054
+ return true;
920
1055
  }
921
1056
  if (Array.isArray(a)) {
922
- const aLength = a.length;
923
- if (!Array.isArray(b) || aLength !== b.length)
1057
+ const length = a.length;
1058
+ if (length !== b.length)
924
1059
  return false;
925
- for (let i = 0; i < aLength; i++) {
1060
+ for (let i = 0; i < length; i++) {
926
1061
  if (!deepEqual(a[i], b[i]))
927
1062
  return false;
928
1063
  }
1064
+ return true;
929
1065
  }
930
- else {
931
- const keysA = Object.keys(a);
932
- const keysB = Object.keys(b);
933
- const keysALength = keysA.length;
934
- if (keysALength !== keysB.length)
1066
+ const keysA = Object.keys(a);
1067
+ const length = keysA.length;
1068
+ if (Object.keys(b).length !== length)
1069
+ return false;
1070
+ for (let i = 0; i < length; i++) {
1071
+ const key = keysA[i];
1072
+ if (!Object.prototype.hasOwnProperty.call(b, key) ||
1073
+ !deepEqual(a[key], b[key])) {
935
1074
  return false;
936
- for (let i = 0; i < keysALength; i++) {
937
- const key = keysA[i];
938
- if (a === b)
939
- return true;
940
- if (!(key in b) || !deepEqual(a[key], b[key]))
941
- return false;
942
1075
  }
943
1076
  }
944
1077
  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.19",
3
+ "version": "0.0.21",
4
4
  "description": "A simple implementation of reactive updates for JavaScript",
5
5
  "main": "index.js",
6
6
  "private": false,