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.
Files changed (142) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/cjs/development/{component-shared-DzjqSRY-.js → component-shared-BjwFh5Jq.js} +2 -2
  3. package/dist/cjs/development/{component-shared-DzjqSRY-.js.map → component-shared-BjwFh5Jq.js.map} +1 -1
  4. package/dist/cjs/development/config-D6wyrhrW.js +58 -0
  5. package/dist/cjs/development/config-D6wyrhrW.js.map +1 -0
  6. package/dist/cjs/development/config.js +1 -1
  7. package/dist/cjs/development/{debug-CDy1L3Id.js → debug-CbAX7VeM.js} +247 -31
  8. package/dist/cjs/development/debug-CbAX7VeM.js.map +1 -0
  9. package/dist/cjs/development/debug.js +3 -1
  10. package/dist/cjs/development/debug.js.map +1 -1
  11. package/dist/cjs/development/index.js +3 -2
  12. package/dist/cjs/development/index.js.map +1 -1
  13. package/dist/cjs/development/react/index.js +399 -52
  14. package/dist/cjs/development/react/index.js.map +1 -1
  15. package/dist/cjs/development/react/index.server.js +2 -2
  16. package/dist/cjs/development/react/index.server.js.map +1 -1
  17. package/dist/cjs/development/react/server.js +1 -1
  18. package/dist/cjs/development/{snapshot-D8Ydfj9E.js → snapshot-BTMVSd8Y.js} +4 -2
  19. package/dist/cjs/development/snapshot-BTMVSd8Y.js.map +1 -0
  20. package/dist/cjs/development/transform/index.js +5 -2
  21. package/dist/cjs/development/transform/index.js.map +1 -1
  22. package/dist/cjs/development/utils.js +34 -2
  23. package/dist/cjs/development/utils.js.map +1 -1
  24. package/dist/cjs/production/{component-shared-BuDl2V-v.js → component-shared-CcxyLg4p.js} +2 -2
  25. package/dist/cjs/production/{component-shared-BuDl2V-v.js.map → component-shared-CcxyLg4p.js.map} +1 -1
  26. package/dist/cjs/production/config-BHvmcsLQ.js +52 -0
  27. package/dist/cjs/production/config-BHvmcsLQ.js.map +1 -0
  28. package/dist/cjs/production/config.js +1 -1
  29. package/dist/cjs/production/{contexts-CMvA-Ae9.js → contexts-waczQzHZ.js} +247 -31
  30. package/dist/cjs/production/contexts-waczQzHZ.js.map +1 -0
  31. package/dist/cjs/production/debug.js +3 -1
  32. package/dist/cjs/production/debug.js.map +1 -1
  33. package/dist/cjs/production/index.js +3 -2
  34. package/dist/cjs/production/index.js.map +1 -1
  35. package/dist/cjs/production/react/index.js +399 -52
  36. package/dist/cjs/production/react/index.js.map +1 -1
  37. package/dist/cjs/production/react/index.server.js +2 -2
  38. package/dist/cjs/production/react/index.server.js.map +1 -1
  39. package/dist/cjs/production/react/server.js +1 -1
  40. package/dist/cjs/production/{snapshot-I8W4cb8t.js → snapshot-7264bWj1.js} +4 -2
  41. package/dist/cjs/production/snapshot-7264bWj1.js.map +1 -0
  42. package/dist/cjs/production/transform/index.js +5 -2
  43. package/dist/cjs/production/transform/index.js.map +1 -1
  44. package/dist/cjs/production/utils.js +34 -2
  45. package/dist/cjs/production/utils.js.map +1 -1
  46. package/dist/esm/config.d.ts +1 -1
  47. package/dist/esm/config.d.ts.map +1 -1
  48. package/dist/esm/debug.d.ts +1 -0
  49. package/dist/esm/debug.d.ts.map +1 -1
  50. package/dist/esm/development/{component-shared-D_i2IMKF.js → component-shared-B3Q6mIzY.js} +2 -2
  51. package/dist/esm/development/{component-shared-D_i2IMKF.js.map → component-shared-B3Q6mIzY.js.map} +1 -1
  52. package/dist/esm/development/config-CQLKpPRj.js +59 -0
  53. package/dist/esm/development/config-CQLKpPRj.js.map +1 -0
  54. package/dist/esm/development/config.js +2 -2
  55. package/dist/esm/development/{debug-DCgp_XPm.js → debug-C3HD8WcT.js} +275 -59
  56. package/dist/esm/development/debug-C3HD8WcT.js.map +1 -0
  57. package/dist/esm/development/debug.js +12 -10
  58. package/dist/esm/development/index.js +18 -17
  59. package/dist/esm/development/react/index.js +400 -53
  60. package/dist/esm/development/react/index.js.map +1 -1
  61. package/dist/esm/development/react/index.server.js +2 -2
  62. package/dist/esm/development/react/index.server.js.map +1 -1
  63. package/dist/esm/development/react/server.js +1 -1
  64. package/dist/esm/development/{snapshot-D19Mgcgz.js → snapshot-CCKlBy-y.js} +7 -5
  65. package/dist/esm/development/snapshot-CCKlBy-y.js.map +1 -0
  66. package/dist/esm/development/transform/index.js +5 -2
  67. package/dist/esm/development/transform/index.js.map +1 -1
  68. package/dist/esm/development/utils.js +38 -6
  69. package/dist/esm/development/utils.js.map +1 -1
  70. package/dist/esm/index.d.ts +1 -1
  71. package/dist/esm/index.d.ts.map +1 -1
  72. package/dist/esm/internals/config.d.ts +40 -0
  73. package/dist/esm/internals/config.d.ts.map +1 -1
  74. package/dist/esm/internals/lease.d.ts +30 -0
  75. package/dist/esm/internals/lease.d.ts.map +1 -0
  76. package/dist/esm/internals/reactive.d.ts +18 -1
  77. package/dist/esm/internals/reactive.d.ts.map +1 -1
  78. package/dist/esm/internals/utils/hash.d.ts +7 -0
  79. package/dist/esm/internals/utils/hash.d.ts.map +1 -1
  80. package/dist/esm/internals/utils/snapshot.d.ts +2 -0
  81. package/dist/esm/internals/utils/snapshot.d.ts.map +1 -1
  82. package/dist/esm/production/{component-shared-XZnx53QZ.js → component-shared-CycOXiis.js} +2 -2
  83. package/dist/esm/production/{component-shared-XZnx53QZ.js.map → component-shared-CycOXiis.js.map} +1 -1
  84. package/dist/esm/production/config-BhtwQYAN.js +53 -0
  85. package/dist/esm/production/config-BhtwQYAN.js.map +1 -0
  86. package/dist/esm/production/config.js +2 -2
  87. package/dist/esm/production/{contexts-Cpo7QZDe.js → contexts-ry5lvNSx.js} +278 -62
  88. package/dist/esm/production/contexts-ry5lvNSx.js.map +1 -0
  89. package/dist/esm/production/debug.js +3 -1
  90. package/dist/esm/production/index.js +19 -18
  91. package/dist/esm/production/react/index.js +400 -53
  92. package/dist/esm/production/react/index.js.map +1 -1
  93. package/dist/esm/production/react/index.server.js +2 -2
  94. package/dist/esm/production/react/index.server.js.map +1 -1
  95. package/dist/esm/production/react/server.js +1 -1
  96. package/dist/esm/production/{snapshot-CZTu3qTo.js → snapshot-1d_HVP3L.js} +7 -5
  97. package/dist/esm/production/snapshot-1d_HVP3L.js.map +1 -0
  98. package/dist/esm/production/transform/index.js +5 -2
  99. package/dist/esm/production/transform/index.js.map +1 -1
  100. package/dist/esm/production/utils.js +39 -7
  101. package/dist/esm/production/utils.js.map +1 -1
  102. package/dist/esm/react/async-component.d.ts +10 -2
  103. package/dist/esm/react/async-component.d.ts.map +1 -1
  104. package/dist/esm/react/component-server.d.ts +6 -2
  105. package/dist/esm/react/component-server.d.ts.map +1 -1
  106. package/dist/esm/react/component.d.ts +5 -2
  107. package/dist/esm/react/component.d.ts.map +1 -1
  108. package/dist/esm/react/delivery.d.ts +107 -0
  109. package/dist/esm/react/delivery.d.ts.map +1 -0
  110. package/dist/esm/react/index.d.ts +3 -2
  111. package/dist/esm/react/index.d.ts.map +1 -1
  112. package/dist/esm/react/pause-signals-context.d.ts +16 -2
  113. package/dist/esm/react/pause-signals-context.d.ts.map +1 -1
  114. package/dist/esm/react/props-hash.d.ts +20 -0
  115. package/dist/esm/react/props-hash.d.ts.map +1 -0
  116. package/dist/esm/react/use-reactive.d.ts +6 -3
  117. package/dist/esm/react/use-reactive.d.ts.map +1 -1
  118. package/dist/esm/transform/async.d.ts.map +1 -1
  119. package/dist/esm/transform/callback.d.ts.map +1 -1
  120. package/dist/esm/transform/promise.d.ts.map +1 -1
  121. package/dist/esm/transform/use-reactive.d.ts.map +1 -1
  122. package/dist/esm/transform/utils.d.ts +1 -1
  123. package/dist/esm/transform/utils.d.ts.map +1 -1
  124. package/dist/esm/utils.d.ts +17 -1
  125. package/dist/esm/utils.d.ts.map +1 -1
  126. package/package.json +1 -1
  127. package/dist/cjs/development/config-B0MtLBgx.js +0 -21
  128. package/dist/cjs/development/config-B0MtLBgx.js.map +0 -1
  129. package/dist/cjs/development/debug-CDy1L3Id.js.map +0 -1
  130. package/dist/cjs/development/snapshot-D8Ydfj9E.js.map +0 -1
  131. package/dist/cjs/production/config-B0MtLBgx.js +0 -21
  132. package/dist/cjs/production/config-B0MtLBgx.js.map +0 -1
  133. package/dist/cjs/production/contexts-CMvA-Ae9.js.map +0 -1
  134. package/dist/cjs/production/snapshot-I8W4cb8t.js.map +0 -1
  135. package/dist/esm/development/config-CPQL7hX-.js +0 -22
  136. package/dist/esm/development/config-CPQL7hX-.js.map +0 -1
  137. package/dist/esm/development/debug-DCgp_XPm.js.map +0 -1
  138. package/dist/esm/development/snapshot-D19Mgcgz.js.map +0 -1
  139. package/dist/esm/production/config-CPQL7hX-.js +0 -22
  140. package/dist/esm/production/config-CPQL7hX-.js.map +0 -1
  141. package/dist/esm/production/contexts-Cpo7QZDe.js.map +0 -1
  142. package/dist/esm/production/snapshot-CZTu3qTo.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- const config = require("./config-B0MtLBgx.js");
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 hashArray(arr, seen) {
1209
- let h = ARRAY;
1208
+ function mixHash(h, k) {
1210
1209
  const c1 = 3432918353;
1211
1210
  const c2 = 461845907;
1212
- for (const item of arr) {
1213
- let k = hashValue(item, seen);
1214
- k = imul(k, c1);
1215
- k = k << 15 | k >>> 17;
1216
- k = imul(k, c2);
1217
- h ^= k;
1218
- h = h << 13 | h >>> 19;
1219
- h = imul(h, 5) + 3864292196;
1220
- }
1221
- h ^= arr.length;
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, 2246822507);
1224
+ h = imul(h, fmix1);
1224
1225
  h ^= h >>> 13;
1225
- h = imul(h, 3266489909);
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), 2654435769) ^ hashValue(obj[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), 2654435769) ^ hashValue(value, 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 ARRAY = hashStr(
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 { current } = this.listeners;
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
- if (!this._isListener) {
1492
- watchSignal(this);
1493
- this.flags |= 16;
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
- unwatchSignal(this);
1506
- this.flags &= -17;
1507
- this.listeners.updatedAt = 0;
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
- if (!this._isListener) {
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.flags |= 16;
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-CMvA-Ae9.js.map
1915
+ //# sourceMappingURL=contexts-waczQzHZ.js.map