@fluixi/reactive 1.0.0-alpha.95 → 1.0.0-alpha.97
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/dist/cdn/reactive.cjs +14 -3
- package/dist/cdn/reactive.global.js +2 -2
- package/dist/cdn/reactive.mjs +14 -3
- package/dist/cdn/signal.cjs +1 -1
- package/dist/cdn/signal.global.js +2 -2
- package/dist/cdn/signal.mjs +1 -1
- package/dist/index.cjs +14 -3
- package/dist/index.mjs +14 -3
- package/dist/lib/index.cjs +15 -4
- package/dist/lib/index.mjs +15 -4
- package/dist/lib/observable/index.cjs +1 -1
- package/dist/lib/observable/index.mjs +1 -1
- package/dist/lib/signal/api.cjs +23 -3
- package/dist/lib/signal/api.mjs +23 -3
- package/dist/lib/signal/cached-resource.cjs +14 -3
- package/dist/lib/signal/cached-resource.mjs +14 -3
- package/dist/lib/signal/graph/children.cjs +1 -1
- package/dist/lib/signal/graph/children.mjs +1 -1
- package/dist/lib/signal/graph/compat.cjs +15 -4
- package/dist/lib/signal/graph/compat.mjs +15 -4
- package/dist/lib/signal/graph/core.cjs +2 -2
- package/dist/lib/signal/graph/core.mjs +2 -2
- package/dist/lib/signal/graph/debounced.cjs +13 -2
- package/dist/lib/signal/graph/debounced.mjs +13 -2
- package/dist/lib/signal/graph/derived.cjs +13 -2
- package/dist/lib/signal/graph/derived.mjs +13 -2
- package/dist/lib/signal/graph/error-boundary.cjs +13 -2
- package/dist/lib/signal/graph/error-boundary.mjs +13 -2
- package/dist/lib/signal/graph/index.cjs +2 -2
- package/dist/lib/signal/graph/index.mjs +2 -2
- package/dist/lib/signal/graph/observe.cjs +1 -1
- package/dist/lib/signal/graph/observe.mjs +1 -1
- package/dist/lib/signal/graph/resource.cjs +13 -2
- package/dist/lib/signal/graph/resource.mjs +13 -2
- package/dist/lib/signal/graph/runtime.cjs +23 -3
- package/dist/lib/signal/graph/runtime.d.ts +4 -1
- package/dist/lib/signal/graph/runtime.d.ts.map +1 -1
- package/dist/lib/signal/graph/runtime.js +23 -4
- package/dist/lib/signal/graph/runtime.mjs +23 -3
- package/dist/lib/signal/graph/signal-next.cjs +15 -4
- package/dist/lib/signal/graph/signal-next.mjs +15 -4
- package/dist/lib/signal/graph/state.cjs +1 -1
- package/dist/lib/signal/graph/state.mjs +1 -1
- package/dist/lib/signal/graph/suspense.cjs +13 -2
- package/dist/lib/signal/graph/suspense.mjs +13 -2
- package/dist/lib/signal/index-legacy.cjs +15 -4
- package/dist/lib/signal/index-legacy.mjs +15 -4
- package/dist/lib/signal/index.cjs +15 -4
- package/dist/lib/signal/index.mjs +15 -4
- package/dist/lib/signal/list.cjs +14 -3
- package/dist/lib/signal/list.mjs +14 -3
- package/dist/lib/signal/resource-api.cjs +13 -2
- package/dist/lib/signal/resource-api.mjs +13 -2
- package/dist/lib/signal/signal.cjs +13 -2
- package/dist/lib/signal/signal.mjs +13 -2
- package/dist/lib/signal/utilities.cjs +14 -3
- package/dist/lib/signal/utilities.mjs +14 -3
- package/dist/lib/store/api.cjs +1 -1
- package/dist/lib/store/api.mjs +1 -1
- package/dist/lib/store/index.cjs +2 -2
- package/dist/lib/store/index.mjs +2 -2
- package/dist/lib/store/store.cjs +1 -1
- package/dist/lib/store/store.mjs +1 -1
- package/dist/tsconfig.lib.tsbuildinfo +1 -1
- package/dist/version.generated.cjs +2 -2
- package/dist/version.generated.d.ts +1 -1
- package/dist/version.generated.js +1 -1
- package/dist/version.generated.mjs +2 -2
- package/package.json +2 -2
|
@@ -44,7 +44,7 @@ __export(runtime_exports, {
|
|
|
44
44
|
module.exports = __toCommonJS(runtime_exports);
|
|
45
45
|
|
|
46
46
|
// src/version.generated.ts
|
|
47
|
-
var VERSION = "1.0.0-alpha.
|
|
47
|
+
var VERSION = "1.0.0-alpha.97";
|
|
48
48
|
|
|
49
49
|
// src/lib/signal/graph/state.ts
|
|
50
50
|
var MAJOR = VERSION.split(".")[0];
|
|
@@ -286,6 +286,15 @@ var Watcher = class {
|
|
|
286
286
|
if (wasEmpty) this._notifyFn();
|
|
287
287
|
}
|
|
288
288
|
};
|
|
289
|
+
function untrack(fn) {
|
|
290
|
+
if (G.untracked) return fn();
|
|
291
|
+
G.untracked = true;
|
|
292
|
+
try {
|
|
293
|
+
return fn();
|
|
294
|
+
} finally {
|
|
295
|
+
G.untracked = false;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
289
298
|
|
|
290
299
|
// src/lib/signal/graph/runtime.ts
|
|
291
300
|
function createChildOwner(parent) {
|
|
@@ -409,7 +418,7 @@ function createRoot(fn) {
|
|
|
409
418
|
const prev = G.owner;
|
|
410
419
|
G.owner = owner;
|
|
411
420
|
try {
|
|
412
|
-
return fn(() => disposeOwner(owner));
|
|
421
|
+
return untrack(() => fn(() => disposeOwner(owner)));
|
|
413
422
|
} finally {
|
|
414
423
|
G.owner = prev;
|
|
415
424
|
}
|
|
@@ -431,6 +440,8 @@ function flushSync() {
|
|
|
431
440
|
if (G.flushing) return;
|
|
432
441
|
G.flushing = true;
|
|
433
442
|
let guard = 0;
|
|
443
|
+
let failed = false;
|
|
444
|
+
let first;
|
|
434
445
|
try {
|
|
435
446
|
while (G.queue.length) {
|
|
436
447
|
if (++guard > 1e5) throw new Error("[fluixi] effect flush did not settle (cycle?)");
|
|
@@ -438,12 +449,21 @@ function flushSync() {
|
|
|
438
449
|
G.queue = [];
|
|
439
450
|
for (const e of batchOf) {
|
|
440
451
|
e.queued = false;
|
|
441
|
-
if (
|
|
452
|
+
if (e.disposed) continue;
|
|
453
|
+
try {
|
|
454
|
+
e.run();
|
|
455
|
+
} catch (error) {
|
|
456
|
+
if (!failed) {
|
|
457
|
+
failed = true;
|
|
458
|
+
first = error;
|
|
459
|
+
}
|
|
460
|
+
}
|
|
442
461
|
}
|
|
443
462
|
}
|
|
444
463
|
} finally {
|
|
445
464
|
G.flushing = false;
|
|
446
465
|
}
|
|
466
|
+
if (failed) throw first;
|
|
447
467
|
}
|
|
448
468
|
function afterWrite() {
|
|
449
469
|
if (G.batchDepth === 0) flushSync();
|
|
@@ -58,7 +58,10 @@ export declare function setOwner(owner: Owner | null): Owner | null;
|
|
|
58
58
|
export declare function runWithOwner<T>(owner: Owner | null, fn: () => T): T;
|
|
59
59
|
/** Register a teardown for the current owner scope. */
|
|
60
60
|
export declare function onCleanup(fn: () => void): void;
|
|
61
|
-
/**
|
|
61
|
+
/**
|
|
62
|
+
* Create a root reactive scope with explicit disposal (TC39 has no ownership). Untracked: what
|
|
63
|
+
* runs in it belongs to it, so the computation that created it does not depend on its reads.
|
|
64
|
+
*/
|
|
62
65
|
export declare function createRoot<T>(fn: (dispose: () => void) => T): T;
|
|
63
66
|
export declare function setScheduler(fn: ((run: () => void) => void) | null): void;
|
|
64
67
|
/** Drain all pending effects now (synchronously). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../src/lib/signal/graph/runtime.ts"],"names":[],"mappings":"AA8BA,MAAM,WAAW,KAAK;IACpB,QAAQ,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC;IACnC,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,KAAK,GAAG,IAAI,CAAC;IACrB,mFAAmF;IACnF,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC;+EAC2E;IAC3E,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,KAAK,GAAG,IAAI,GAAG,KAAK,CAI5D;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,UAAO,GAAG,IAAI,CAE7D;AAED,sFAAsF;AACtF,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,OAAO,CAE5D;AAUD,MAAM,WAAW,OAAO,CAAC,CAAC;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,CAAC,GAAG,SAAS,CAAC;IAC5B,0GAA0G;IAI1G,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,CAAC,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,GAAG,CAAC;CAC7E;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAyB5E;AAED,qEAAqE;AACrE,wBAAgB,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,CAAC,CAAA;CAAE,GAAG,CAAC,GAAG,SAAS,CAYtF;AAED,mFAAmF;AACnF,wBAAgB,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAO1F;AAED,qEAAqE;AACrE,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAW3E;AAGD,kFAAkF;AAClF,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,CAAC,GAAG,IAAI,GACpE,IAAI,CAEN;AAED,+FAA+F;AAC/F,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAMhE;AAED,0FAA0F;AAC1F,wBAAgB,eAAe,CAC7B,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,KAAK,OAAO,CAAC,GAAG,IAAI,GAC5D,IAAI,CAEN;AAED,wBAAgB,QAAQ,IAAI,KAAK,GAAG,IAAI,CAEvC;AAED,2FAA2F;AAC3F,wBAAgB,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,CAI1D;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAQnE;AAED,uDAAuD;AACvD,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAO9C;AAmBD
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../src/lib/signal/graph/runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
* watcher's notify only schedules, and the re-run, a tracked recompute, happens on
|
|
19
19
|
* flush.
|
|
20
20
|
*/
|
|
21
|
-
import { Computed, Watcher } from './core.js';
|
|
21
|
+
import { Computed, Watcher, untrack } from './core.js';
|
|
22
22
|
import { G } from './state.js';
|
|
23
23
|
import { reportReactiveContext, reportReactiveContextCreated, reportReactiveDispose, reportReactiveNode, } from './observe.js';
|
|
24
24
|
/**
|
|
@@ -189,7 +189,10 @@ function disposeOwner(owner, final = true) {
|
|
|
189
189
|
if (final)
|
|
190
190
|
owner.disposed = true;
|
|
191
191
|
}
|
|
192
|
-
/**
|
|
192
|
+
/**
|
|
193
|
+
* Create a root reactive scope with explicit disposal (TC39 has no ownership). Untracked: what
|
|
194
|
+
* runs in it belongs to it, so the computation that created it does not depend on its reads.
|
|
195
|
+
*/
|
|
193
196
|
export function createRoot(fn) {
|
|
194
197
|
const owner = makeOwner(G.owner);
|
|
195
198
|
if (G.owner)
|
|
@@ -197,7 +200,7 @@ export function createRoot(fn) {
|
|
|
197
200
|
const prev = G.owner;
|
|
198
201
|
G.owner = owner;
|
|
199
202
|
try {
|
|
200
|
-
return fn(() => disposeOwner(owner));
|
|
203
|
+
return untrack(() => fn(() => disposeOwner(owner)));
|
|
201
204
|
}
|
|
202
205
|
finally {
|
|
203
206
|
G.owner = prev;
|
|
@@ -227,6 +230,11 @@ export function flushSync() {
|
|
|
227
230
|
return;
|
|
228
231
|
G.flushing = true;
|
|
229
232
|
let guard = 0;
|
|
233
|
+
// An effect that throws must not stop the rest: those queued after it would be dropped
|
|
234
|
+
// with their `queued` mark still set, so nothing could ever run them again. The first
|
|
235
|
+
// error is rethrown once the queue is drained.
|
|
236
|
+
let failed = false;
|
|
237
|
+
let first;
|
|
230
238
|
try {
|
|
231
239
|
while (G.queue.length) {
|
|
232
240
|
if (++guard > 100000)
|
|
@@ -235,14 +243,25 @@ export function flushSync() {
|
|
|
235
243
|
G.queue = [];
|
|
236
244
|
for (const e of batchOf) {
|
|
237
245
|
e.queued = false;
|
|
238
|
-
if (
|
|
246
|
+
if (e.disposed)
|
|
247
|
+
continue;
|
|
248
|
+
try {
|
|
239
249
|
e.run();
|
|
250
|
+
}
|
|
251
|
+
catch (error) {
|
|
252
|
+
if (!failed) {
|
|
253
|
+
failed = true;
|
|
254
|
+
first = error;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
240
257
|
}
|
|
241
258
|
}
|
|
242
259
|
}
|
|
243
260
|
finally {
|
|
244
261
|
G.flushing = false;
|
|
245
262
|
}
|
|
263
|
+
if (failed)
|
|
264
|
+
throw first;
|
|
246
265
|
}
|
|
247
266
|
/**
|
|
248
267
|
* Run pending effects after a write completes, but only at the top level (not
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// src/version.generated.ts
|
|
2
|
-
var VERSION = "1.0.0-alpha.
|
|
2
|
+
var VERSION = "1.0.0-alpha.97";
|
|
3
3
|
|
|
4
4
|
// src/lib/signal/graph/state.ts
|
|
5
5
|
var MAJOR = VERSION.split(".")[0];
|
|
@@ -241,6 +241,15 @@ var Watcher = class {
|
|
|
241
241
|
if (wasEmpty) this._notifyFn();
|
|
242
242
|
}
|
|
243
243
|
};
|
|
244
|
+
function untrack(fn) {
|
|
245
|
+
if (G.untracked) return fn();
|
|
246
|
+
G.untracked = true;
|
|
247
|
+
try {
|
|
248
|
+
return fn();
|
|
249
|
+
} finally {
|
|
250
|
+
G.untracked = false;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
244
253
|
|
|
245
254
|
// src/lib/signal/graph/runtime.ts
|
|
246
255
|
function createChildOwner(parent) {
|
|
@@ -364,7 +373,7 @@ function createRoot(fn) {
|
|
|
364
373
|
const prev = G.owner;
|
|
365
374
|
G.owner = owner;
|
|
366
375
|
try {
|
|
367
|
-
return fn(() => disposeOwner(owner));
|
|
376
|
+
return untrack(() => fn(() => disposeOwner(owner)));
|
|
368
377
|
} finally {
|
|
369
378
|
G.owner = prev;
|
|
370
379
|
}
|
|
@@ -386,6 +395,8 @@ function flushSync() {
|
|
|
386
395
|
if (G.flushing) return;
|
|
387
396
|
G.flushing = true;
|
|
388
397
|
let guard = 0;
|
|
398
|
+
let failed = false;
|
|
399
|
+
let first;
|
|
389
400
|
try {
|
|
390
401
|
while (G.queue.length) {
|
|
391
402
|
if (++guard > 1e5) throw new Error("[fluixi] effect flush did not settle (cycle?)");
|
|
@@ -393,12 +404,21 @@ function flushSync() {
|
|
|
393
404
|
G.queue = [];
|
|
394
405
|
for (const e of batchOf) {
|
|
395
406
|
e.queued = false;
|
|
396
|
-
if (
|
|
407
|
+
if (e.disposed) continue;
|
|
408
|
+
try {
|
|
409
|
+
e.run();
|
|
410
|
+
} catch (error) {
|
|
411
|
+
if (!failed) {
|
|
412
|
+
failed = true;
|
|
413
|
+
first = error;
|
|
414
|
+
}
|
|
415
|
+
}
|
|
397
416
|
}
|
|
398
417
|
}
|
|
399
418
|
} finally {
|
|
400
419
|
G.flushing = false;
|
|
401
420
|
}
|
|
421
|
+
if (failed) throw first;
|
|
402
422
|
}
|
|
403
423
|
function afterWrite() {
|
|
404
424
|
if (G.batchDepth === 0) flushSync();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @fluixi/reactive v1.0.0-alpha.
|
|
1
|
+
/*! @fluixi/reactive v1.0.0-alpha.97 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
|
|
2
2
|
"use strict";
|
|
3
3
|
var __defProp = Object.defineProperty;
|
|
4
4
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
@@ -84,7 +84,7 @@ __export(signal_next_exports, {
|
|
|
84
84
|
module.exports = __toCommonJS(signal_next_exports);
|
|
85
85
|
|
|
86
86
|
// src/version.generated.ts
|
|
87
|
-
var VERSION = "1.0.0-alpha.
|
|
87
|
+
var VERSION = "1.0.0-alpha.97";
|
|
88
88
|
|
|
89
89
|
// src/lib/signal/graph/state.ts
|
|
90
90
|
var MAJOR = VERSION.split(".")[0];
|
|
@@ -493,7 +493,7 @@ function createRoot(fn) {
|
|
|
493
493
|
const prev = G.owner;
|
|
494
494
|
G.owner = owner;
|
|
495
495
|
try {
|
|
496
|
-
return fn(() => disposeOwner(owner));
|
|
496
|
+
return untrack(() => fn(() => disposeOwner(owner)));
|
|
497
497
|
} finally {
|
|
498
498
|
G.owner = prev;
|
|
499
499
|
}
|
|
@@ -515,6 +515,8 @@ function flushSync() {
|
|
|
515
515
|
if (G.flushing) return;
|
|
516
516
|
G.flushing = true;
|
|
517
517
|
let guard = 0;
|
|
518
|
+
let failed = false;
|
|
519
|
+
let first;
|
|
518
520
|
try {
|
|
519
521
|
while (G.queue.length) {
|
|
520
522
|
if (++guard > 1e5) throw new Error("[fluixi] effect flush did not settle (cycle?)");
|
|
@@ -522,12 +524,21 @@ function flushSync() {
|
|
|
522
524
|
G.queue = [];
|
|
523
525
|
for (const e of batchOf) {
|
|
524
526
|
e.queued = false;
|
|
525
|
-
if (
|
|
527
|
+
if (e.disposed) continue;
|
|
528
|
+
try {
|
|
529
|
+
e.run();
|
|
530
|
+
} catch (error) {
|
|
531
|
+
if (!failed) {
|
|
532
|
+
failed = true;
|
|
533
|
+
first = error;
|
|
534
|
+
}
|
|
535
|
+
}
|
|
526
536
|
}
|
|
527
537
|
}
|
|
528
538
|
} finally {
|
|
529
539
|
G.flushing = false;
|
|
530
540
|
}
|
|
541
|
+
if (failed) throw first;
|
|
531
542
|
}
|
|
532
543
|
function afterWrite() {
|
|
533
544
|
if (G.batchDepth === 0) flushSync();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
/*! @fluixi/reactive v1.0.0-alpha.
|
|
1
|
+
/*! @fluixi/reactive v1.0.0-alpha.97 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
|
|
2
2
|
|
|
3
3
|
// src/version.generated.ts
|
|
4
|
-
var VERSION = "1.0.0-alpha.
|
|
4
|
+
var VERSION = "1.0.0-alpha.97";
|
|
5
5
|
|
|
6
6
|
// src/lib/signal/graph/state.ts
|
|
7
7
|
var MAJOR = VERSION.split(".")[0];
|
|
@@ -410,7 +410,7 @@ function createRoot(fn) {
|
|
|
410
410
|
const prev = G.owner;
|
|
411
411
|
G.owner = owner;
|
|
412
412
|
try {
|
|
413
|
-
return fn(() => disposeOwner(owner));
|
|
413
|
+
return untrack(() => fn(() => disposeOwner(owner)));
|
|
414
414
|
} finally {
|
|
415
415
|
G.owner = prev;
|
|
416
416
|
}
|
|
@@ -432,6 +432,8 @@ function flushSync() {
|
|
|
432
432
|
if (G.flushing) return;
|
|
433
433
|
G.flushing = true;
|
|
434
434
|
let guard = 0;
|
|
435
|
+
let failed = false;
|
|
436
|
+
let first;
|
|
435
437
|
try {
|
|
436
438
|
while (G.queue.length) {
|
|
437
439
|
if (++guard > 1e5) throw new Error("[fluixi] effect flush did not settle (cycle?)");
|
|
@@ -439,12 +441,21 @@ function flushSync() {
|
|
|
439
441
|
G.queue = [];
|
|
440
442
|
for (const e of batchOf) {
|
|
441
443
|
e.queued = false;
|
|
442
|
-
if (
|
|
444
|
+
if (e.disposed) continue;
|
|
445
|
+
try {
|
|
446
|
+
e.run();
|
|
447
|
+
} catch (error) {
|
|
448
|
+
if (!failed) {
|
|
449
|
+
failed = true;
|
|
450
|
+
first = error;
|
|
451
|
+
}
|
|
452
|
+
}
|
|
443
453
|
}
|
|
444
454
|
}
|
|
445
455
|
} finally {
|
|
446
456
|
G.flushing = false;
|
|
447
457
|
}
|
|
458
|
+
if (failed) throw first;
|
|
448
459
|
}
|
|
449
460
|
function afterWrite() {
|
|
450
461
|
if (G.batchDepth === 0) flushSync();
|
|
@@ -27,7 +27,7 @@ __export(suspense_exports, {
|
|
|
27
27
|
module.exports = __toCommonJS(suspense_exports);
|
|
28
28
|
|
|
29
29
|
// src/version.generated.ts
|
|
30
|
-
var VERSION = "1.0.0-alpha.
|
|
30
|
+
var VERSION = "1.0.0-alpha.97";
|
|
31
31
|
|
|
32
32
|
// src/lib/signal/graph/state.ts
|
|
33
33
|
var MAJOR = VERSION.split(".")[0];
|
|
@@ -225,6 +225,8 @@ function flushSync() {
|
|
|
225
225
|
if (G.flushing) return;
|
|
226
226
|
G.flushing = true;
|
|
227
227
|
let guard = 0;
|
|
228
|
+
let failed = false;
|
|
229
|
+
let first;
|
|
228
230
|
try {
|
|
229
231
|
while (G.queue.length) {
|
|
230
232
|
if (++guard > 1e5) throw new Error("[fluixi] effect flush did not settle (cycle?)");
|
|
@@ -232,12 +234,21 @@ function flushSync() {
|
|
|
232
234
|
G.queue = [];
|
|
233
235
|
for (const e of batchOf) {
|
|
234
236
|
e.queued = false;
|
|
235
|
-
if (
|
|
237
|
+
if (e.disposed) continue;
|
|
238
|
+
try {
|
|
239
|
+
e.run();
|
|
240
|
+
} catch (error) {
|
|
241
|
+
if (!failed) {
|
|
242
|
+
failed = true;
|
|
243
|
+
first = error;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
236
246
|
}
|
|
237
247
|
}
|
|
238
248
|
} finally {
|
|
239
249
|
G.flushing = false;
|
|
240
250
|
}
|
|
251
|
+
if (failed) throw first;
|
|
241
252
|
}
|
|
242
253
|
function afterWrite() {
|
|
243
254
|
if (G.batchDepth === 0) flushSync();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// src/version.generated.ts
|
|
2
|
-
var VERSION = "1.0.0-alpha.
|
|
2
|
+
var VERSION = "1.0.0-alpha.97";
|
|
3
3
|
|
|
4
4
|
// src/lib/signal/graph/state.ts
|
|
5
5
|
var MAJOR = VERSION.split(".")[0];
|
|
@@ -197,6 +197,8 @@ function flushSync() {
|
|
|
197
197
|
if (G.flushing) return;
|
|
198
198
|
G.flushing = true;
|
|
199
199
|
let guard = 0;
|
|
200
|
+
let failed = false;
|
|
201
|
+
let first;
|
|
200
202
|
try {
|
|
201
203
|
while (G.queue.length) {
|
|
202
204
|
if (++guard > 1e5) throw new Error("[fluixi] effect flush did not settle (cycle?)");
|
|
@@ -204,12 +206,21 @@ function flushSync() {
|
|
|
204
206
|
G.queue = [];
|
|
205
207
|
for (const e of batchOf) {
|
|
206
208
|
e.queued = false;
|
|
207
|
-
if (
|
|
209
|
+
if (e.disposed) continue;
|
|
210
|
+
try {
|
|
211
|
+
e.run();
|
|
212
|
+
} catch (error) {
|
|
213
|
+
if (!failed) {
|
|
214
|
+
failed = true;
|
|
215
|
+
first = error;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
208
218
|
}
|
|
209
219
|
}
|
|
210
220
|
} finally {
|
|
211
221
|
G.flushing = false;
|
|
212
222
|
}
|
|
223
|
+
if (failed) throw first;
|
|
213
224
|
}
|
|
214
225
|
function afterWrite() {
|
|
215
226
|
if (G.batchDepth === 0) flushSync();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @fluixi/reactive v1.0.0-alpha.
|
|
1
|
+
/*! @fluixi/reactive v1.0.0-alpha.97 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
|
|
2
2
|
"use strict";
|
|
3
3
|
var __defProp = Object.defineProperty;
|
|
4
4
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
@@ -494,7 +494,7 @@ function makeArrayFlat(values) {
|
|
|
494
494
|
}
|
|
495
495
|
|
|
496
496
|
// src/version.generated.ts
|
|
497
|
-
var VERSION = "1.0.0-alpha.
|
|
497
|
+
var VERSION = "1.0.0-alpha.97";
|
|
498
498
|
|
|
499
499
|
// src/lib/signal/graph/state.ts
|
|
500
500
|
var MAJOR = VERSION.split(".")[0];
|
|
@@ -816,7 +816,7 @@ function createRoot(fn) {
|
|
|
816
816
|
const prev = G.owner;
|
|
817
817
|
G.owner = owner;
|
|
818
818
|
try {
|
|
819
|
-
return fn(() => disposeOwner(owner));
|
|
819
|
+
return untrack(() => fn(() => disposeOwner(owner)));
|
|
820
820
|
} finally {
|
|
821
821
|
G.owner = prev;
|
|
822
822
|
}
|
|
@@ -838,6 +838,8 @@ function flushSync() {
|
|
|
838
838
|
if (G.flushing) return;
|
|
839
839
|
G.flushing = true;
|
|
840
840
|
let guard = 0;
|
|
841
|
+
let failed = false;
|
|
842
|
+
let first;
|
|
841
843
|
try {
|
|
842
844
|
while (G.queue.length) {
|
|
843
845
|
if (++guard > 1e5) throw new Error("[fluixi] effect flush did not settle (cycle?)");
|
|
@@ -845,12 +847,21 @@ function flushSync() {
|
|
|
845
847
|
G.queue = [];
|
|
846
848
|
for (const e of batchOf) {
|
|
847
849
|
e.queued = false;
|
|
848
|
-
if (
|
|
850
|
+
if (e.disposed) continue;
|
|
851
|
+
try {
|
|
852
|
+
e.run();
|
|
853
|
+
} catch (error) {
|
|
854
|
+
if (!failed) {
|
|
855
|
+
failed = true;
|
|
856
|
+
first = error;
|
|
857
|
+
}
|
|
858
|
+
}
|
|
849
859
|
}
|
|
850
860
|
}
|
|
851
861
|
} finally {
|
|
852
862
|
G.flushing = false;
|
|
853
863
|
}
|
|
864
|
+
if (failed) throw first;
|
|
854
865
|
}
|
|
855
866
|
function afterWrite() {
|
|
856
867
|
if (G.batchDepth === 0) flushSync();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @fluixi/reactive v1.0.0-alpha.
|
|
1
|
+
/*! @fluixi/reactive v1.0.0-alpha.97 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
|
|
2
2
|
|
|
3
3
|
// src/lib/predicates.ts
|
|
4
4
|
function isFunction(value) {
|
|
@@ -392,7 +392,7 @@ function makeArrayFlat(values) {
|
|
|
392
392
|
}
|
|
393
393
|
|
|
394
394
|
// src/version.generated.ts
|
|
395
|
-
var VERSION = "1.0.0-alpha.
|
|
395
|
+
var VERSION = "1.0.0-alpha.97";
|
|
396
396
|
|
|
397
397
|
// src/lib/signal/graph/state.ts
|
|
398
398
|
var MAJOR = VERSION.split(".")[0];
|
|
@@ -714,7 +714,7 @@ function createRoot(fn) {
|
|
|
714
714
|
const prev = G.owner;
|
|
715
715
|
G.owner = owner;
|
|
716
716
|
try {
|
|
717
|
-
return fn(() => disposeOwner(owner));
|
|
717
|
+
return untrack(() => fn(() => disposeOwner(owner)));
|
|
718
718
|
} finally {
|
|
719
719
|
G.owner = prev;
|
|
720
720
|
}
|
|
@@ -736,6 +736,8 @@ function flushSync() {
|
|
|
736
736
|
if (G.flushing) return;
|
|
737
737
|
G.flushing = true;
|
|
738
738
|
let guard = 0;
|
|
739
|
+
let failed = false;
|
|
740
|
+
let first;
|
|
739
741
|
try {
|
|
740
742
|
while (G.queue.length) {
|
|
741
743
|
if (++guard > 1e5) throw new Error("[fluixi] effect flush did not settle (cycle?)");
|
|
@@ -743,12 +745,21 @@ function flushSync() {
|
|
|
743
745
|
G.queue = [];
|
|
744
746
|
for (const e of batchOf) {
|
|
745
747
|
e.queued = false;
|
|
746
|
-
if (
|
|
748
|
+
if (e.disposed) continue;
|
|
749
|
+
try {
|
|
750
|
+
e.run();
|
|
751
|
+
} catch (error) {
|
|
752
|
+
if (!failed) {
|
|
753
|
+
failed = true;
|
|
754
|
+
first = error;
|
|
755
|
+
}
|
|
756
|
+
}
|
|
747
757
|
}
|
|
748
758
|
}
|
|
749
759
|
} finally {
|
|
750
760
|
G.flushing = false;
|
|
751
761
|
}
|
|
762
|
+
if (failed) throw first;
|
|
752
763
|
}
|
|
753
764
|
function afterWrite() {
|
|
754
765
|
if (G.batchDepth === 0) flushSync();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @fluixi/reactive v1.0.0-alpha.
|
|
1
|
+
/*! @fluixi/reactive v1.0.0-alpha.97 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
|
|
2
2
|
"use strict";
|
|
3
3
|
var __defProp = Object.defineProperty;
|
|
4
4
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
@@ -106,7 +106,7 @@ __export(index_exports, {
|
|
|
106
106
|
module.exports = __toCommonJS(index_exports);
|
|
107
107
|
|
|
108
108
|
// src/version.generated.ts
|
|
109
|
-
var VERSION = "1.0.0-alpha.
|
|
109
|
+
var VERSION = "1.0.0-alpha.97";
|
|
110
110
|
|
|
111
111
|
// src/lib/signal/graph/state.ts
|
|
112
112
|
var MAJOR = VERSION.split(".")[0];
|
|
@@ -561,7 +561,7 @@ function createRoot(fn) {
|
|
|
561
561
|
const prev = G.owner;
|
|
562
562
|
G.owner = owner;
|
|
563
563
|
try {
|
|
564
|
-
return fn(() => disposeOwner(owner));
|
|
564
|
+
return untrack(() => fn(() => disposeOwner(owner)));
|
|
565
565
|
} finally {
|
|
566
566
|
G.owner = prev;
|
|
567
567
|
}
|
|
@@ -583,6 +583,8 @@ function flushSync() {
|
|
|
583
583
|
if (G.flushing) return;
|
|
584
584
|
G.flushing = true;
|
|
585
585
|
let guard = 0;
|
|
586
|
+
let failed = false;
|
|
587
|
+
let first;
|
|
586
588
|
try {
|
|
587
589
|
while (G.queue.length) {
|
|
588
590
|
if (++guard > 1e5) throw new Error("[fluixi] effect flush did not settle (cycle?)");
|
|
@@ -590,12 +592,21 @@ function flushSync() {
|
|
|
590
592
|
G.queue = [];
|
|
591
593
|
for (const e of batchOf) {
|
|
592
594
|
e.queued = false;
|
|
593
|
-
if (
|
|
595
|
+
if (e.disposed) continue;
|
|
596
|
+
try {
|
|
597
|
+
e.run();
|
|
598
|
+
} catch (error) {
|
|
599
|
+
if (!failed) {
|
|
600
|
+
failed = true;
|
|
601
|
+
first = error;
|
|
602
|
+
}
|
|
603
|
+
}
|
|
594
604
|
}
|
|
595
605
|
}
|
|
596
606
|
} finally {
|
|
597
607
|
G.flushing = false;
|
|
598
608
|
}
|
|
609
|
+
if (failed) throw first;
|
|
599
610
|
}
|
|
600
611
|
function afterWrite() {
|
|
601
612
|
if (G.batchDepth === 0) flushSync();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
/*! @fluixi/reactive v1.0.0-alpha.
|
|
1
|
+
/*! @fluixi/reactive v1.0.0-alpha.97 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
|
|
2
2
|
|
|
3
3
|
// src/version.generated.ts
|
|
4
|
-
var VERSION = "1.0.0-alpha.
|
|
4
|
+
var VERSION = "1.0.0-alpha.97";
|
|
5
5
|
|
|
6
6
|
// src/lib/signal/graph/state.ts
|
|
7
7
|
var MAJOR = VERSION.split(".")[0];
|
|
@@ -456,7 +456,7 @@ function createRoot(fn) {
|
|
|
456
456
|
const prev = G.owner;
|
|
457
457
|
G.owner = owner;
|
|
458
458
|
try {
|
|
459
|
-
return fn(() => disposeOwner(owner));
|
|
459
|
+
return untrack(() => fn(() => disposeOwner(owner)));
|
|
460
460
|
} finally {
|
|
461
461
|
G.owner = prev;
|
|
462
462
|
}
|
|
@@ -478,6 +478,8 @@ function flushSync() {
|
|
|
478
478
|
if (G.flushing) return;
|
|
479
479
|
G.flushing = true;
|
|
480
480
|
let guard = 0;
|
|
481
|
+
let failed = false;
|
|
482
|
+
let first;
|
|
481
483
|
try {
|
|
482
484
|
while (G.queue.length) {
|
|
483
485
|
if (++guard > 1e5) throw new Error("[fluixi] effect flush did not settle (cycle?)");
|
|
@@ -485,12 +487,21 @@ function flushSync() {
|
|
|
485
487
|
G.queue = [];
|
|
486
488
|
for (const e of batchOf) {
|
|
487
489
|
e.queued = false;
|
|
488
|
-
if (
|
|
490
|
+
if (e.disposed) continue;
|
|
491
|
+
try {
|
|
492
|
+
e.run();
|
|
493
|
+
} catch (error) {
|
|
494
|
+
if (!failed) {
|
|
495
|
+
failed = true;
|
|
496
|
+
first = error;
|
|
497
|
+
}
|
|
498
|
+
}
|
|
489
499
|
}
|
|
490
500
|
}
|
|
491
501
|
} finally {
|
|
492
502
|
G.flushing = false;
|
|
493
503
|
}
|
|
504
|
+
if (failed) throw first;
|
|
494
505
|
}
|
|
495
506
|
function afterWrite() {
|
|
496
507
|
if (G.batchDepth === 0) flushSync();
|