@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 +48 -0
- package/dist/library/classes.d.ts +81 -21
- package/dist/library/classes.js +292 -154
- package/dist/library/classes.js.map +1 -1
- package/dist/library/index.d.ts +1 -14
- package/dist/library/index.js +2 -14
- package/dist/library/index.js.map +1 -1
- package/package.json +1 -1
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
|
-
* @
|
|
142
|
+
* @type {SetLike<DerivedCell<any>>}
|
|
115
143
|
*/
|
|
116
|
-
|
|
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
|
-
|
|
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<
|
|
299
|
-
export type PromiseFnWithArgs<Args extends Array<any
|
|
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 {};
|
package/dist/library/classes.js
CHANGED
|
@@ -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
|
|
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
|
-
* @
|
|
21
|
+
* @template Output
|
|
22
|
+
* @typedef {() => Promise<Output | null>} SimplePromiseFn
|
|
22
23
|
*/
|
|
23
24
|
/**
|
|
24
|
-
* @template {Array<any>} Args
|
|
25
|
-
* @typedef {(...args: Args) => Promise<
|
|
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 {
|
|
123
|
+
* @type {Array<Cell<any>>}
|
|
73
124
|
*/
|
|
74
|
-
const UPDATE_BUFFER =
|
|
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
|
-
|
|
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 =
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
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
|
|
182
|
+
if (cell[IsScheduled])
|
|
183
|
+
cell.update();
|
|
184
|
+
cell[IsScheduled] = false;
|
|
125
185
|
}
|
|
126
|
-
UPDATE_BUFFER.
|
|
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
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
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
|
|
273
|
-
if (
|
|
387
|
+
const ctx = ACTIVE_DERIVED_CTX[ACTIVE_DERIVED_CTX.length - 1];
|
|
388
|
+
if (ctx === undefined) {
|
|
274
389
|
return this.wvalue;
|
|
275
390
|
}
|
|
276
|
-
|
|
277
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
625
|
-
const
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
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
|
-
|
|
634
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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 (
|
|
1015
|
+
if (a === null ||
|
|
881
1016
|
typeof a !== 'object' ||
|
|
882
|
-
|
|
883
|
-
b
|
|
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 (
|
|
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
|
-
|
|
1035
|
+
return true;
|
|
1036
|
+
}
|
|
1037
|
+
if (a instanceof Set) {
|
|
1038
|
+
if (a.size !== b.size)
|
|
898
1039
|
return false;
|
|
899
|
-
|
|
900
|
-
|
|
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
|
|
908
|
-
if (
|
|
1047
|
+
const length = a.length;
|
|
1048
|
+
if (length !== b.length)
|
|
909
1049
|
return false;
|
|
910
|
-
for (let i = 0; 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
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
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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"}
|
package/dist/library/index.d.ts
CHANGED
|
@@ -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 };
|
package/dist/library/index.js
CHANGED
|
@@ -1,17 +1,5 @@
|
|
|
1
1
|
/// <reference types="./index.d.ts" />
|
|
2
|
-
|
|
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,
|
|
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"}
|