signalium 3.0.3 → 4.0.0
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/CHANGELOG.md +33 -0
- package/dist/cjs/development/{component-shared-DzjqSRY-.js → component-shared-BjwFh5Jq.js} +2 -2
- package/dist/cjs/development/{component-shared-DzjqSRY-.js.map → component-shared-BjwFh5Jq.js.map} +1 -1
- package/dist/cjs/development/config-D6wyrhrW.js +58 -0
- package/dist/cjs/development/config-D6wyrhrW.js.map +1 -0
- package/dist/cjs/development/config.js +1 -1
- package/dist/cjs/development/{debug-CDy1L3Id.js → debug-CbAX7VeM.js} +247 -31
- package/dist/cjs/development/debug-CbAX7VeM.js.map +1 -0
- package/dist/cjs/development/debug.js +3 -1
- package/dist/cjs/development/debug.js.map +1 -1
- package/dist/cjs/development/index.js +3 -2
- package/dist/cjs/development/index.js.map +1 -1
- package/dist/cjs/development/react/index.js +399 -52
- package/dist/cjs/development/react/index.js.map +1 -1
- package/dist/cjs/development/react/index.server.js +2 -2
- package/dist/cjs/development/react/index.server.js.map +1 -1
- package/dist/cjs/development/react/server.js +1 -1
- package/dist/cjs/development/{snapshot-D8Ydfj9E.js → snapshot-BTMVSd8Y.js} +4 -2
- package/dist/cjs/development/snapshot-BTMVSd8Y.js.map +1 -0
- package/dist/cjs/development/transform/index.js +5 -2
- package/dist/cjs/development/transform/index.js.map +1 -1
- package/dist/cjs/development/utils.js +34 -2
- package/dist/cjs/development/utils.js.map +1 -1
- package/dist/cjs/production/{component-shared-BuDl2V-v.js → component-shared-CcxyLg4p.js} +2 -2
- package/dist/cjs/production/{component-shared-BuDl2V-v.js.map → component-shared-CcxyLg4p.js.map} +1 -1
- package/dist/cjs/production/config-BHvmcsLQ.js +52 -0
- package/dist/cjs/production/config-BHvmcsLQ.js.map +1 -0
- package/dist/cjs/production/config.js +1 -1
- package/dist/cjs/production/{contexts-CMvA-Ae9.js → contexts-waczQzHZ.js} +247 -31
- package/dist/cjs/production/contexts-waczQzHZ.js.map +1 -0
- package/dist/cjs/production/debug.js +3 -1
- package/dist/cjs/production/debug.js.map +1 -1
- package/dist/cjs/production/index.js +3 -2
- package/dist/cjs/production/index.js.map +1 -1
- package/dist/cjs/production/react/index.js +399 -52
- package/dist/cjs/production/react/index.js.map +1 -1
- package/dist/cjs/production/react/index.server.js +2 -2
- package/dist/cjs/production/react/index.server.js.map +1 -1
- package/dist/cjs/production/react/server.js +1 -1
- package/dist/cjs/production/{snapshot-I8W4cb8t.js → snapshot-7264bWj1.js} +4 -2
- package/dist/cjs/production/snapshot-7264bWj1.js.map +1 -0
- package/dist/cjs/production/transform/index.js +5 -2
- package/dist/cjs/production/transform/index.js.map +1 -1
- package/dist/cjs/production/utils.js +34 -2
- package/dist/cjs/production/utils.js.map +1 -1
- package/dist/esm/config.d.ts +1 -1
- package/dist/esm/config.d.ts.map +1 -1
- package/dist/esm/debug.d.ts +1 -0
- package/dist/esm/debug.d.ts.map +1 -1
- package/dist/esm/development/{component-shared-D_i2IMKF.js → component-shared-B3Q6mIzY.js} +2 -2
- package/dist/esm/development/{component-shared-D_i2IMKF.js.map → component-shared-B3Q6mIzY.js.map} +1 -1
- package/dist/esm/development/config-CQLKpPRj.js +59 -0
- package/dist/esm/development/config-CQLKpPRj.js.map +1 -0
- package/dist/esm/development/config.js +2 -2
- package/dist/esm/development/{debug-DCgp_XPm.js → debug-C3HD8WcT.js} +275 -59
- package/dist/esm/development/debug-C3HD8WcT.js.map +1 -0
- package/dist/esm/development/debug.js +12 -10
- package/dist/esm/development/index.js +18 -17
- package/dist/esm/development/react/index.js +400 -53
- package/dist/esm/development/react/index.js.map +1 -1
- package/dist/esm/development/react/index.server.js +2 -2
- package/dist/esm/development/react/index.server.js.map +1 -1
- package/dist/esm/development/react/server.js +1 -1
- package/dist/esm/development/{snapshot-D19Mgcgz.js → snapshot-CCKlBy-y.js} +7 -5
- package/dist/esm/development/snapshot-CCKlBy-y.js.map +1 -0
- package/dist/esm/development/transform/index.js +5 -2
- package/dist/esm/development/transform/index.js.map +1 -1
- package/dist/esm/development/utils.js +38 -6
- package/dist/esm/development/utils.js.map +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/internals/config.d.ts +40 -0
- package/dist/esm/internals/config.d.ts.map +1 -1
- package/dist/esm/internals/lease.d.ts +30 -0
- package/dist/esm/internals/lease.d.ts.map +1 -0
- package/dist/esm/internals/reactive.d.ts +18 -1
- package/dist/esm/internals/reactive.d.ts.map +1 -1
- package/dist/esm/internals/utils/hash.d.ts +7 -0
- package/dist/esm/internals/utils/hash.d.ts.map +1 -1
- package/dist/esm/internals/utils/snapshot.d.ts +2 -0
- package/dist/esm/internals/utils/snapshot.d.ts.map +1 -1
- package/dist/esm/production/{component-shared-XZnx53QZ.js → component-shared-CycOXiis.js} +2 -2
- package/dist/esm/production/{component-shared-XZnx53QZ.js.map → component-shared-CycOXiis.js.map} +1 -1
- package/dist/esm/production/config-BhtwQYAN.js +53 -0
- package/dist/esm/production/config-BhtwQYAN.js.map +1 -0
- package/dist/esm/production/config.js +2 -2
- package/dist/esm/production/{contexts-Cpo7QZDe.js → contexts-ry5lvNSx.js} +278 -62
- package/dist/esm/production/contexts-ry5lvNSx.js.map +1 -0
- package/dist/esm/production/debug.js +3 -1
- package/dist/esm/production/index.js +19 -18
- package/dist/esm/production/react/index.js +400 -53
- package/dist/esm/production/react/index.js.map +1 -1
- package/dist/esm/production/react/index.server.js +2 -2
- package/dist/esm/production/react/index.server.js.map +1 -1
- package/dist/esm/production/react/server.js +1 -1
- package/dist/esm/production/{snapshot-CZTu3qTo.js → snapshot-1d_HVP3L.js} +7 -5
- package/dist/esm/production/snapshot-1d_HVP3L.js.map +1 -0
- package/dist/esm/production/transform/index.js +5 -2
- package/dist/esm/production/transform/index.js.map +1 -1
- package/dist/esm/production/utils.js +39 -7
- package/dist/esm/production/utils.js.map +1 -1
- package/dist/esm/react/async-component.d.ts +10 -2
- package/dist/esm/react/async-component.d.ts.map +1 -1
- package/dist/esm/react/component-server.d.ts +6 -2
- package/dist/esm/react/component-server.d.ts.map +1 -1
- package/dist/esm/react/component.d.ts +5 -2
- package/dist/esm/react/component.d.ts.map +1 -1
- package/dist/esm/react/delivery.d.ts +107 -0
- package/dist/esm/react/delivery.d.ts.map +1 -0
- package/dist/esm/react/index.d.ts +3 -2
- package/dist/esm/react/index.d.ts.map +1 -1
- package/dist/esm/react/pause-signals-context.d.ts +16 -2
- package/dist/esm/react/pause-signals-context.d.ts.map +1 -1
- package/dist/esm/react/props-hash.d.ts +20 -0
- package/dist/esm/react/props-hash.d.ts.map +1 -0
- package/dist/esm/react/use-reactive.d.ts +6 -3
- package/dist/esm/react/use-reactive.d.ts.map +1 -1
- package/dist/esm/transform/async.d.ts.map +1 -1
- package/dist/esm/transform/callback.d.ts.map +1 -1
- package/dist/esm/transform/promise.d.ts.map +1 -1
- package/dist/esm/transform/use-reactive.d.ts.map +1 -1
- package/dist/esm/transform/utils.d.ts +1 -1
- package/dist/esm/transform/utils.d.ts.map +1 -1
- package/dist/esm/utils.d.ts +17 -1
- package/dist/esm/utils.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/cjs/development/config-B0MtLBgx.js +0 -21
- package/dist/cjs/development/config-B0MtLBgx.js.map +0 -1
- package/dist/cjs/development/debug-CDy1L3Id.js.map +0 -1
- package/dist/cjs/development/snapshot-D8Ydfj9E.js.map +0 -1
- package/dist/cjs/production/config-B0MtLBgx.js +0 -21
- package/dist/cjs/production/config-B0MtLBgx.js.map +0 -1
- package/dist/cjs/production/contexts-CMvA-Ae9.js.map +0 -1
- package/dist/cjs/production/snapshot-I8W4cb8t.js.map +0 -1
- package/dist/esm/development/config-CPQL7hX-.js +0 -22
- package/dist/esm/development/config-CPQL7hX-.js.map +0 -1
- package/dist/esm/development/debug-DCgp_XPm.js.map +0 -1
- package/dist/esm/development/snapshot-D19Mgcgz.js.map +0 -1
- package/dist/esm/production/config-CPQL7hX-.js +0 -22
- package/dist/esm/production/config-CPQL7hX-.js.map +0 -1
- package/dist/esm/production/contexts-Cpo7QZDe.js.map +0 -1
- package/dist/esm/production/snapshot-CZTu3qTo.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
const config = require("./config-
|
|
2
|
+
const config = require("./config-BHvmcsLQ.js");
|
|
3
3
|
let CURRENT_CONSUMER;
|
|
4
4
|
const setCurrentConsumer = (consumer) => {
|
|
5
5
|
CURRENT_CONSUMER = consumer;
|
|
@@ -1205,32 +1205,43 @@ function hashNumber(num, seed = 0) {
|
|
|
1205
1205
|
h ^= h >>> 16;
|
|
1206
1206
|
return h >>> 0;
|
|
1207
1207
|
}
|
|
1208
|
-
function
|
|
1209
|
-
let h = ARRAY;
|
|
1208
|
+
function mixHash(h, k) {
|
|
1210
1209
|
const c1 = 3432918353;
|
|
1211
1210
|
const c2 = 461845907;
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1211
|
+
const n = 3864292196;
|
|
1212
|
+
k = imul(k, c1);
|
|
1213
|
+
k = k << 15 | k >>> 17;
|
|
1214
|
+
k = imul(k, c2);
|
|
1215
|
+
h ^= k;
|
|
1216
|
+
h = h << 13 | h >>> 19;
|
|
1217
|
+
return imul(h, 5) + n | 0;
|
|
1218
|
+
}
|
|
1219
|
+
function finalizeHash(h, length) {
|
|
1220
|
+
const fmix1 = 2246822507;
|
|
1221
|
+
const fmix2 = 3266489909;
|
|
1222
|
+
h ^= length;
|
|
1222
1223
|
h ^= h >>> 16;
|
|
1223
|
-
h = imul(h,
|
|
1224
|
+
h = imul(h, fmix1);
|
|
1224
1225
|
h ^= h >>> 13;
|
|
1225
|
-
h = imul(h,
|
|
1226
|
+
h = imul(h, fmix2);
|
|
1226
1227
|
h ^= h >>> 16;
|
|
1227
1228
|
return h >>> 0;
|
|
1228
1229
|
}
|
|
1230
|
+
function hashArray(arr, seen) {
|
|
1231
|
+
let h = ARRAY_SEED;
|
|
1232
|
+
for (const item of arr) {
|
|
1233
|
+
h = mixHash(h, hashValue(item, seen));
|
|
1234
|
+
}
|
|
1235
|
+
return finalizeHash(h, arr.length);
|
|
1236
|
+
}
|
|
1229
1237
|
function hashObject(obj, seen) {
|
|
1238
|
+
return hashObjectKeys(obj, Object.keys(obj), seen);
|
|
1239
|
+
}
|
|
1240
|
+
function hashObjectKeys(obj, keys, seen) {
|
|
1241
|
+
const keyMultiplier = 2654435769;
|
|
1230
1242
|
let sum = OBJECT;
|
|
1231
|
-
const keys = Object.keys(obj);
|
|
1232
1243
|
for (const key of keys) {
|
|
1233
|
-
sum += imul(hashValue(key, seen),
|
|
1244
|
+
sum += imul(hashValue(key, seen), keyMultiplier) ^ hashValue(obj[key], seen);
|
|
1234
1245
|
}
|
|
1235
1246
|
return sum >>> 0;
|
|
1236
1247
|
}
|
|
@@ -1242,9 +1253,10 @@ function hashSet(set, seen) {
|
|
|
1242
1253
|
return sum >>> 0;
|
|
1243
1254
|
}
|
|
1244
1255
|
function hashMap(map, seen) {
|
|
1256
|
+
const keyMultiplier = 2654435769;
|
|
1245
1257
|
let sum = MAP;
|
|
1246
1258
|
for (const [key, value] of map) {
|
|
1247
|
-
sum += imul(hashValue(key, seen),
|
|
1259
|
+
sum += imul(hashValue(key, seen), keyMultiplier) ^ hashValue(value, seen);
|
|
1248
1260
|
}
|
|
1249
1261
|
return sum >>> 0;
|
|
1250
1262
|
}
|
|
@@ -1283,7 +1295,7 @@ const FALSE = hashStr(
|
|
|
1283
1295
|
3
|
|
1284
1296
|
/* HashType.FALSE */
|
|
1285
1297
|
);
|
|
1286
|
-
const
|
|
1298
|
+
const ARRAY_SEED = hashStr(
|
|
1287
1299
|
"array",
|
|
1288
1300
|
7
|
|
1289
1301
|
/* HashType.ARRAY */
|
|
@@ -1395,6 +1407,95 @@ function hashReactiveFn(fn, args) {
|
|
|
1395
1407
|
h = h << 13 | h >>> 19;
|
|
1396
1408
|
return imul(h, 5) + 3864292196 >>> 0;
|
|
1397
1409
|
}
|
|
1410
|
+
let young = /* @__PURE__ */ new Set();
|
|
1411
|
+
let old = /* @__PURE__ */ new Set();
|
|
1412
|
+
let timer;
|
|
1413
|
+
const pinned = /* @__PURE__ */ new Map();
|
|
1414
|
+
const SUSPENDED_LEASE_HOLD_TTLS = 30;
|
|
1415
|
+
function armTimer() {
|
|
1416
|
+
timer = setTimeout(sweepLeases, config.getRenderLeaseTtl());
|
|
1417
|
+
timer.unref?.();
|
|
1418
|
+
}
|
|
1419
|
+
function sweepLeases() {
|
|
1420
|
+
timer = void 0;
|
|
1421
|
+
const expired = old;
|
|
1422
|
+
for (const signal2 of expired) {
|
|
1423
|
+
signal2._releaseLease();
|
|
1424
|
+
}
|
|
1425
|
+
expired.clear();
|
|
1426
|
+
old = young;
|
|
1427
|
+
young = expired;
|
|
1428
|
+
if (old.size > 0) {
|
|
1429
|
+
armTimer();
|
|
1430
|
+
}
|
|
1431
|
+
}
|
|
1432
|
+
function addLease(signal2) {
|
|
1433
|
+
if (!pinned.delete(signal2)) {
|
|
1434
|
+
old.delete(signal2);
|
|
1435
|
+
}
|
|
1436
|
+
young.add(signal2);
|
|
1437
|
+
if (timer === void 0) {
|
|
1438
|
+
armTimer();
|
|
1439
|
+
}
|
|
1440
|
+
}
|
|
1441
|
+
function removeLease(signal2) {
|
|
1442
|
+
if (!young.delete(signal2) && !old.delete(signal2)) {
|
|
1443
|
+
pinned.delete(signal2);
|
|
1444
|
+
}
|
|
1445
|
+
}
|
|
1446
|
+
function pinLease(signal2) {
|
|
1447
|
+
if (!signal2._isLeased) {
|
|
1448
|
+
return void 0;
|
|
1449
|
+
}
|
|
1450
|
+
young.delete(signal2);
|
|
1451
|
+
old.delete(signal2);
|
|
1452
|
+
const token = {};
|
|
1453
|
+
pinned.set(signal2, token);
|
|
1454
|
+
return token;
|
|
1455
|
+
}
|
|
1456
|
+
function unpinLease(signal2, token) {
|
|
1457
|
+
if (pinned.get(signal2) === token && signal2._isLeased) {
|
|
1458
|
+
addLease(signal2);
|
|
1459
|
+
}
|
|
1460
|
+
}
|
|
1461
|
+
function holdLeaseUntilSettled(signal2, thenable) {
|
|
1462
|
+
const token = pinLease(signal2);
|
|
1463
|
+
if (token === void 0) {
|
|
1464
|
+
return;
|
|
1465
|
+
}
|
|
1466
|
+
const renew = () => unpinLease(signal2, token);
|
|
1467
|
+
thenable.then(renew, renew);
|
|
1468
|
+
}
|
|
1469
|
+
function holdSuspendedLease(signal2) {
|
|
1470
|
+
const token = pinLease(signal2);
|
|
1471
|
+
if (token === void 0) {
|
|
1472
|
+
return;
|
|
1473
|
+
}
|
|
1474
|
+
const hold = setTimeout(() => unpinLease(signal2, token), Math.min(config.getRenderLeaseTtl() * SUSPENDED_LEASE_HOLD_TTLS, config.MAX_TIMEOUT));
|
|
1475
|
+
hold.unref?.();
|
|
1476
|
+
}
|
|
1477
|
+
function releaseAbandonedAttempt(signal2) {
|
|
1478
|
+
const token = pinned.get(signal2);
|
|
1479
|
+
if (token !== void 0) {
|
|
1480
|
+
unpinLease(signal2, token);
|
|
1481
|
+
}
|
|
1482
|
+
}
|
|
1483
|
+
function releaseRenderLeases() {
|
|
1484
|
+
if (timer !== void 0) {
|
|
1485
|
+
clearTimeout(timer);
|
|
1486
|
+
timer = void 0;
|
|
1487
|
+
}
|
|
1488
|
+
const leases = [...old, ...young, ...pinned.keys()];
|
|
1489
|
+
old = /* @__PURE__ */ new Set();
|
|
1490
|
+
young = /* @__PURE__ */ new Set();
|
|
1491
|
+
pinned.clear();
|
|
1492
|
+
for (const signal2 of leases) {
|
|
1493
|
+
signal2._releaseLease();
|
|
1494
|
+
}
|
|
1495
|
+
}
|
|
1496
|
+
function getRenderLeaseCount() {
|
|
1497
|
+
return young.size + old.size + pinned.size;
|
|
1498
|
+
}
|
|
1398
1499
|
let ID = 0;
|
|
1399
1500
|
function createReactiveDefinition(id, desc, compute, equals, isRelay2, paramKey, tracer) {
|
|
1400
1501
|
const def = {
|
|
@@ -1454,6 +1555,9 @@ class ReactiveSignal {
|
|
|
1454
1555
|
this.flags &= -33;
|
|
1455
1556
|
}
|
|
1456
1557
|
}
|
|
1558
|
+
get _isLeased() {
|
|
1559
|
+
return (this.flags & 128) !== 0;
|
|
1560
|
+
}
|
|
1457
1561
|
get _isLazy() {
|
|
1458
1562
|
return (this.flags & 64) !== 0;
|
|
1459
1563
|
}
|
|
@@ -1468,6 +1572,7 @@ class ReactiveSignal {
|
|
|
1468
1572
|
return this._listeners ?? (this._listeners = {
|
|
1469
1573
|
updatedAt: 0,
|
|
1470
1574
|
current: /* @__PURE__ */ new Map(),
|
|
1575
|
+
pausedReaders: 0,
|
|
1471
1576
|
cachedBoundAdd: this.addListener.bind(this)
|
|
1472
1577
|
});
|
|
1473
1578
|
}
|
|
@@ -1475,7 +1580,8 @@ class ReactiveSignal {
|
|
|
1475
1580
|
return getSignal(this);
|
|
1476
1581
|
}
|
|
1477
1582
|
addListener(listener, opts) {
|
|
1478
|
-
const
|
|
1583
|
+
const meta = this.listeners;
|
|
1584
|
+
const { current } = meta;
|
|
1479
1585
|
if (!current.has(listener)) {
|
|
1480
1586
|
let effective = listener;
|
|
1481
1587
|
if (opts?.skipInitial) {
|
|
@@ -1488,23 +1594,39 @@ class ReactiveSignal {
|
|
|
1488
1594
|
listener();
|
|
1489
1595
|
};
|
|
1490
1596
|
}
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1597
|
+
const flags = this.flags;
|
|
1598
|
+
current.set(listener, effective);
|
|
1599
|
+
const unpaused = meta.pausedReaders < current.size;
|
|
1600
|
+
if ((flags & 16) === 0) {
|
|
1601
|
+
this.flags = flags | 16;
|
|
1602
|
+
} else if ((flags & 128) !== 0 && (unpaused || (flags & 256) === 0)) {
|
|
1603
|
+
this.flags = flags & -129;
|
|
1604
|
+
removeLease(this);
|
|
1605
|
+
}
|
|
1606
|
+
if (unpaused) {
|
|
1607
|
+
this._takeListenerWatch();
|
|
1608
|
+
} else {
|
|
1609
|
+
this._pauseListenerWatch();
|
|
1494
1610
|
}
|
|
1495
1611
|
if (this.watchCount > 0) {
|
|
1496
1612
|
schedulePull(this);
|
|
1497
1613
|
}
|
|
1498
|
-
current.set(listener, effective);
|
|
1499
1614
|
}
|
|
1500
1615
|
return () => {
|
|
1501
1616
|
if (current.has(listener)) {
|
|
1502
1617
|
current.delete(listener);
|
|
1503
1618
|
if (current.size === 0) {
|
|
1619
|
+
const flags = this.flags;
|
|
1620
|
+
if ((flags & 128) !== 0)
|
|
1621
|
+
return;
|
|
1504
1622
|
cancelPull(this);
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1623
|
+
this.flags = flags & -273;
|
|
1624
|
+
if ((flags & 256) !== 0) {
|
|
1625
|
+
unwatchSignal(this);
|
|
1626
|
+
}
|
|
1627
|
+
meta.updatedAt = 0;
|
|
1628
|
+
} else if (meta.pausedReaders >= current.size) {
|
|
1629
|
+
this._pauseListenerWatch();
|
|
1508
1630
|
}
|
|
1509
1631
|
}
|
|
1510
1632
|
};
|
|
@@ -1512,15 +1634,99 @@ class ReactiveSignal {
|
|
|
1512
1634
|
// This method is used in React hooks specifically. It returns a bound add method
|
|
1513
1635
|
// that is cached to avoid creating a new one on each call, and it eagerly sets
|
|
1514
1636
|
// the listener as watched so that relays that are accessed will be activated.
|
|
1637
|
+
//
|
|
1638
|
+
// The eager watch is a lease (see `lease.ts`): the commit's subscription claims it, and a
|
|
1639
|
+
// discarded render's lease expires. Each render of a still-leased signal extends it.
|
|
1515
1640
|
addListenerLazy(watch = true) {
|
|
1516
|
-
|
|
1641
|
+
const flags = this.flags;
|
|
1642
|
+
if ((flags & 16) === 0) {
|
|
1517
1643
|
if (watch) {
|
|
1518
1644
|
watchSignal(this);
|
|
1645
|
+
this.flags |= 16 | 128 | 256;
|
|
1646
|
+
} else {
|
|
1647
|
+
this.flags |= 16 | 128;
|
|
1519
1648
|
}
|
|
1520
|
-
this
|
|
1649
|
+
addLease(this);
|
|
1650
|
+
} else if ((flags & 128) !== 0 || watch && (flags & 256) === 0) {
|
|
1651
|
+
if (watch && (flags & 256) === 0) {
|
|
1652
|
+
watchSignal(this);
|
|
1653
|
+
this.flags |= 256;
|
|
1654
|
+
}
|
|
1655
|
+
this.flags |= 128;
|
|
1656
|
+
addLease(this);
|
|
1521
1657
|
}
|
|
1522
1658
|
return this.listeners.cachedBoundAdd;
|
|
1523
1659
|
}
|
|
1660
|
+
/** Drops the listener watch; listeners stay subscribed. */
|
|
1661
|
+
_pauseWatch() {
|
|
1662
|
+
const flags = this.flags;
|
|
1663
|
+
if ((flags & 256) !== 0) {
|
|
1664
|
+
this.flags = flags & -257;
|
|
1665
|
+
unwatchSignal(this, { isPausing: true });
|
|
1666
|
+
}
|
|
1667
|
+
}
|
|
1668
|
+
/** Retakes the listener watch, pulling changes missed while unwatched. */
|
|
1669
|
+
_resumeWatch() {
|
|
1670
|
+
if ((this.flags & 16) !== 0 && this._takeListenerWatch()) {
|
|
1671
|
+
schedulePull(this);
|
|
1672
|
+
}
|
|
1673
|
+
}
|
|
1674
|
+
_takeListenerWatch() {
|
|
1675
|
+
if ((this.flags & 256) !== 0) {
|
|
1676
|
+
return false;
|
|
1677
|
+
}
|
|
1678
|
+
watchSignal(this);
|
|
1679
|
+
this.flags |= 256;
|
|
1680
|
+
return true;
|
|
1681
|
+
}
|
|
1682
|
+
/** `deferred` reconciles in a microtask, for a reader that unregisters before it unsubscribes. */
|
|
1683
|
+
_addPausedReaders(delta, deferred = false) {
|
|
1684
|
+
this.listeners.pausedReaders += delta;
|
|
1685
|
+
if (deferred) {
|
|
1686
|
+
queueMicrotask(() => this._reconcilePausedReaders());
|
|
1687
|
+
} else {
|
|
1688
|
+
this._reconcilePausedReaders();
|
|
1689
|
+
}
|
|
1690
|
+
}
|
|
1691
|
+
_reconcilePausedReaders() {
|
|
1692
|
+
const { current, pausedReaders } = this.listeners;
|
|
1693
|
+
if (current.size === 0)
|
|
1694
|
+
return;
|
|
1695
|
+
if (pausedReaders < current.size) {
|
|
1696
|
+
this._resumeWatch();
|
|
1697
|
+
} else {
|
|
1698
|
+
this._pauseListenerWatch();
|
|
1699
|
+
}
|
|
1700
|
+
}
|
|
1701
|
+
/** Pauses for the listeners' sake; an unclaimed render lease's watch belongs to its render. */
|
|
1702
|
+
_pauseListenerWatch() {
|
|
1703
|
+
if ((this.flags & 128) === 0) {
|
|
1704
|
+
this._pauseWatch();
|
|
1705
|
+
}
|
|
1706
|
+
}
|
|
1707
|
+
/** Releases an unclaimed render lease; a no-op once claimed. */
|
|
1708
|
+
_releaseLease() {
|
|
1709
|
+
const flags = this.flags;
|
|
1710
|
+
if ((flags & 128) === 0) {
|
|
1711
|
+
return;
|
|
1712
|
+
}
|
|
1713
|
+
const meta = this._listeners;
|
|
1714
|
+
if (meta !== null && meta.current.size > 0) {
|
|
1715
|
+
this.flags = flags & -129;
|
|
1716
|
+
if (meta.pausedReaders >= meta.current.size) {
|
|
1717
|
+
this._pauseWatch();
|
|
1718
|
+
}
|
|
1719
|
+
return;
|
|
1720
|
+
}
|
|
1721
|
+
this.flags = flags & -401;
|
|
1722
|
+
if (meta !== null) {
|
|
1723
|
+
meta.updatedAt = 0;
|
|
1724
|
+
}
|
|
1725
|
+
cancelPull(this);
|
|
1726
|
+
if ((flags & 256) !== 0) {
|
|
1727
|
+
unwatchSignal(this);
|
|
1728
|
+
}
|
|
1729
|
+
}
|
|
1524
1730
|
}
|
|
1525
1731
|
const runListeners = (signal2) => {
|
|
1526
1732
|
const { listeners } = signal2;
|
|
@@ -1660,31 +1866,41 @@ const getScopeOwner = (obj) => {
|
|
|
1660
1866
|
}
|
|
1661
1867
|
return scope;
|
|
1662
1868
|
};
|
|
1869
|
+
exports.ARRAY_SEED = ARRAY_SEED;
|
|
1663
1870
|
exports.ReactivePromise = ReactivePromise;
|
|
1664
1871
|
exports.SignalScope = SignalScope;
|
|
1665
1872
|
exports.callback = callback;
|
|
1873
|
+
exports.checkSignal = checkSignal;
|
|
1666
1874
|
exports.clearGlobalContexts = clearGlobalContexts;
|
|
1667
1875
|
exports.context = context;
|
|
1668
1876
|
exports.createReactiveDefinition = createReactiveDefinition;
|
|
1669
1877
|
exports.createReactiveSignal = createReactiveSignal;
|
|
1670
1878
|
exports.createRelay = createRelay;
|
|
1671
1879
|
exports.createTask = createTask;
|
|
1880
|
+
exports.finalizeHash = finalizeHash;
|
|
1672
1881
|
exports.generatorResultToPromiseWithConsumer = generatorResultToPromiseWithConsumer;
|
|
1673
1882
|
exports.getContext = getContext;
|
|
1674
1883
|
exports.getCurrentConsumer = getCurrentConsumer;
|
|
1675
1884
|
exports.getCurrentScope = getCurrentScope;
|
|
1676
1885
|
exports.getGlobalScope = getGlobalScope;
|
|
1886
|
+
exports.getObjectHash = getObjectHash;
|
|
1887
|
+
exports.getRenderLeaseCount = getRenderLeaseCount;
|
|
1677
1888
|
exports.getScopeOwner = getScopeOwner;
|
|
1678
1889
|
exports.getSignal = getSignal;
|
|
1890
|
+
exports.hashObjectKeys = hashObjectKeys;
|
|
1679
1891
|
exports.hashValue = hashValue;
|
|
1892
|
+
exports.holdLeaseUntilSettled = holdLeaseUntilSettled;
|
|
1893
|
+
exports.holdSuspendedLease = holdSuspendedLease;
|
|
1680
1894
|
exports.isPromise = isPromise;
|
|
1681
1895
|
exports.isReactivePromise = isReactivePromise;
|
|
1682
1896
|
exports.isSignal = isSignal;
|
|
1683
1897
|
exports.isThennable = isThennable;
|
|
1898
|
+
exports.mixHash = mixHash;
|
|
1684
1899
|
exports.notifier = notifier;
|
|
1685
1900
|
exports.registerCustomHash = registerCustomHash;
|
|
1901
|
+
exports.releaseAbandonedAttempt = releaseAbandonedAttempt;
|
|
1902
|
+
exports.releaseRenderLeases = releaseRenderLeases;
|
|
1686
1903
|
exports.runSignal = runSignal;
|
|
1687
|
-
exports.schedulePull = schedulePull;
|
|
1688
1904
|
exports.scheduleTracer = scheduleTracer;
|
|
1689
1905
|
exports.setCurrentConsumer = setCurrentConsumer;
|
|
1690
1906
|
exports.setGlobalContexts = setGlobalContexts;
|
|
@@ -1696,4 +1912,4 @@ exports.signal = signal;
|
|
|
1696
1912
|
exports.unwatchSignal = unwatchSignal;
|
|
1697
1913
|
exports.watchSignal = watchSignal;
|
|
1698
1914
|
exports.withContexts = withContexts;
|
|
1699
|
-
//# sourceMappingURL=contexts-
|
|
1915
|
+
//# sourceMappingURL=contexts-waczQzHZ.js.map
|