signalium 2.2.0 → 2.2.2
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 +13 -0
- package/dist/cjs/development/{core-api-BO_W1aEw.js → core-api-C8J7lYBC.js} +2 -2
- package/dist/cjs/development/{core-api-BO_W1aEw.js.map → core-api-C8J7lYBC.js.map} +1 -1
- package/dist/cjs/development/{debug-DW86yXJK.js → debug-DuXQhd5q.js} +62 -51
- package/dist/cjs/development/debug-DuXQhd5q.js.map +1 -0
- package/dist/cjs/development/debug.js +1 -1
- package/dist/cjs/development/index.js +2 -2
- package/dist/cjs/development/react/index.js +2 -2
- package/dist/cjs/development/utils.js +2 -2
- package/dist/cjs/production/{contexts-BAkp5KrR.js → contexts-DOH1tHd8.js} +62 -51
- package/dist/cjs/production/contexts-DOH1tHd8.js.map +1 -0
- package/dist/cjs/production/{core-api-B2d0JjB_.js → core-api-Cx2_AumW.js} +2 -2
- package/dist/cjs/production/{core-api-B2d0JjB_.js.map → core-api-Cx2_AumW.js.map} +1 -1
- package/dist/cjs/production/debug.js +1 -1
- package/dist/cjs/production/index.js +2 -2
- package/dist/cjs/production/react/index.js +2 -2
- package/dist/cjs/production/utils.js +2 -2
- package/dist/esm/development/{core-api-CotzAQ5V.js → core-api-CF5aK2Lx.js} +2 -2
- package/dist/esm/development/{core-api-CotzAQ5V.js.map → core-api-CF5aK2Lx.js.map} +1 -1
- package/dist/esm/development/{debug-DoBIh4Lm.js → debug-E2E1pZe5.js} +62 -51
- package/dist/esm/development/debug-E2E1pZe5.js.map +1 -0
- package/dist/esm/development/debug.js +1 -1
- package/dist/esm/development/index.js +2 -2
- package/dist/esm/development/react/index.js +2 -2
- package/dist/esm/development/utils.js +3 -3
- package/dist/esm/internals/async.d.ts +1 -0
- package/dist/esm/internals/async.d.ts.map +1 -1
- package/dist/esm/internals/scheduling.d.ts +3 -0
- package/dist/esm/internals/scheduling.d.ts.map +1 -1
- package/dist/esm/internals/utils/hash.d.ts +1 -3
- package/dist/esm/internals/utils/hash.d.ts.map +1 -1
- package/dist/esm/internals/watch.d.ts.map +1 -1
- package/dist/esm/production/{contexts-CYAwBumI.js → contexts-Dj9Y86xW.js} +62 -51
- package/dist/esm/production/contexts-Dj9Y86xW.js.map +1 -0
- package/dist/esm/production/{core-api-BY3r_t3J.js → core-api-D_uw3umM.js} +2 -2
- package/dist/esm/production/{core-api-BY3r_t3J.js.map → core-api-D_uw3umM.js.map} +1 -1
- package/dist/esm/production/debug.js +1 -1
- package/dist/esm/production/index.js +2 -2
- package/dist/esm/production/react/index.js +2 -2
- package/dist/esm/production/utils.js +3 -3
- package/package.json +1 -1
- package/dist/cjs/development/debug-DW86yXJK.js.map +0 -1
- package/dist/cjs/production/contexts-BAkp5KrR.js.map +0 -1
- package/dist/esm/development/debug-DoBIh4Lm.js.map +0 -1
- package/dist/esm/production/contexts-CYAwBumI.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as createReactiveDefinition, S as SignalScope, g as getCurrentScope, a as createReactiveSignal, b as createTask, d as createRelay, e as getScopeOwner } from "./debug-
|
|
1
|
+
import { c as createReactiveDefinition, S as SignalScope, g as getCurrentScope, a as createReactiveSignal, b as createTask, d as createRelay, e as getScopeOwner } from "./debug-E2E1pZe5.js";
|
|
2
2
|
const DERIVED_DEFINITION_MAP = /* @__PURE__ */ new Map();
|
|
3
3
|
function getReactiveFnAndDefinition(fn, opts) {
|
|
4
4
|
let fnAndDef = DERIVED_DEFINITION_MAP.get(fn);
|
|
@@ -53,4 +53,4 @@ export {
|
|
|
53
53
|
task as t,
|
|
54
54
|
watcher as w
|
|
55
55
|
};
|
|
56
|
-
//# sourceMappingURL=core-api-
|
|
56
|
+
//# sourceMappingURL=core-api-CF5aK2Lx.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core-api-
|
|
1
|
+
{"version":3,"file":"core-api-CF5aK2Lx.js","sources":["../../../src/internals/core-api.ts"],"sourcesContent":["import {\n ReactiveTask,\n ReactiveValue,\n Watcher,\n ReactiveOptions,\n RelayActivate,\n type DiscriminatedReactivePromise,\n SignalOptions,\n ReactiveFn,\n ReadonlySignal,\n} from '../types.js';\nimport { getCurrentScope, getScopeOwner, SignalScope } from './contexts.js';\nimport {\n createReactiveDefinition,\n createReactiveSignal,\n ReactiveDefinition as ReactiveDefinition,\n} from './reactive.js';\nimport { createRelay, createTask } from './async.js';\nimport { Tracer } from './trace.js';\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport const DERIVED_DEFINITION_MAP = new Map<Function, [(...args: any) => any, ReactiveDefinition<any, any>]>();\n\nexport function getReactiveFnAndDefinition<T, Args extends unknown[]>(\n fn: (...args: Args) => T,\n opts?: ReactiveOptions<T, Args>,\n): [(...args: Args) => ReactiveValue<T>, ReactiveDefinition<T, Args>] {\n let fnAndDef = DERIVED_DEFINITION_MAP.get(fn);\n\n if (!fnAndDef) {\n const def = createReactiveDefinition(opts?.id, opts?.desc, fn, opts?.equals, false, opts?.paramKey, undefined);\n\n const defScope = getCurrentScope();\n\n const reactiveFn: ReactiveFn<T, Args> = (...args) => {\n const scope = getCurrentScope(defScope);\n const signal = scope.get(def, args as any);\n\n return signal.value;\n };\n\n fnAndDef = [reactiveFn, def];\n\n DERIVED_DEFINITION_MAP.set(fn, fnAndDef);\n }\n\n return fnAndDef;\n}\n\nexport function reactive<T, Args extends unknown[]>(\n fn: (...args: Args) => T,\n opts?: ReactiveOptions<T, Args>,\n): ReactiveFn<T, Args> {\n return getReactiveFnAndDefinition(fn, opts)[0];\n}\n\nexport const reactiveMethod = <T, Args extends unknown[]>(\n owner: object,\n fn: (...args: Args) => T,\n opts?: ReactiveOptions<T, Args>,\n): ReactiveFn<T, Args> => {\n const def = createReactiveDefinition(opts?.id, opts?.desc, fn, opts?.equals, false, opts?.paramKey, undefined);\n\n const reactiveFn: ReactiveFn<T, Args> = (...args) => {\n return getScopeOwner(owner).get(def, args as any).value;\n };\n\n DERIVED_DEFINITION_MAP.set(reactiveFn, [reactiveFn, def]);\n\n return reactiveFn;\n};\n\nexport function relay<T>(activate: RelayActivate<T>, opts?: SignalOptions<T>): DiscriminatedReactivePromise<T> {\n const scope = getCurrentScope();\n\n return createRelay(activate, scope, opts) as DiscriminatedReactivePromise<T>;\n}\n\nexport const task = <T, Args extends unknown[]>(\n fn: (...args: Args) => Promise<T>,\n opts?: SignalOptions<T>,\n): ReactiveTask<T, Args> => {\n const scope = getCurrentScope();\n\n return createTask(fn, scope, opts);\n};\n\nexport function watcher<T>(fn: () => T, opts?: SignalOptions<T> & { isolate?: boolean; tracer?: Tracer }): Watcher<T> {\n const def = createReactiveDefinition(opts?.id, opts?.desc, fn, opts?.equals, false, undefined, opts?.tracer);\n\n const scope = opts?.isolate ? new SignalScope([]) : getCurrentScope();\n\n return createReactiveSignal(def, undefined, undefined, scope);\n}\n\n/**\n * Creates a reactive signal from a compute function. This is useful for when you\n * want to create a signal that does not receive parameters, but is still reactive.\n *\n * @param compute\n * @param opts\n * @returns\n */\nexport const reactiveSignal = <T>(\n compute: () => T,\n opts?: SignalOptions<T> & { isolate?: boolean },\n): ReadonlySignal<T> => {\n const def = createReactiveDefinition(opts?.id, opts?.desc, compute, opts?.equals, false, undefined, undefined);\n\n const scope = opts?.isolate ? new SignalScope([]) : getCurrentScope();\n\n return createReactiveSignal(def, undefined, undefined, scope);\n};\n"],"names":[],"mappings":";AAqBO,MAAM,6CAA6B,IAAA;AAEnC,SAAS,2BACd,IACA,MACoE;AACpE,MAAI,WAAW,uBAAuB,IAAI,EAAE;AAE5C,MAAI,CAAC,UAAU;AACb,UAAM,MAAM,yBAAyB,MAAM,IAAI,MAAM,MAAM,IAAI,MAAM,QAAQ,OAAO,MAAM,UAAU,MAAS;AAE7G,UAAM,WAAW,gBAAA;AAEjB,UAAM,aAAkC,IAAI,SAAS;AACnD,YAAM,QAAQ,gBAAgB,QAAQ;AACtC,YAAM,SAAS,MAAM,IAAI,KAAK,IAAW;AAEzC,aAAO,OAAO;AAAA,IAChB;AAEA,eAAW,CAAC,YAAY,GAAG;AAE3B,2BAAuB,IAAI,IAAI,QAAQ;AAAA,EACzC;AAEA,SAAO;AACT;AAEO,SAAS,SACd,IACA,MACqB;AACrB,SAAO,2BAA2B,IAAI,IAAI,EAAE,CAAC;AAC/C;AAEO,MAAM,iBAAiB,CAC5B,OACA,IACA,SACwB;AACxB,QAAM,MAAM,yBAAyB,MAAM,IAAI,MAAM,MAAM,IAAI,MAAM,QAAQ,OAAO,MAAM,UAAU,MAAS;AAE7G,QAAM,aAAkC,IAAI,SAAS;AACnD,WAAO,cAAc,KAAK,EAAE,IAAI,KAAK,IAAW,EAAE;AAAA,EACpD;AAEA,yBAAuB,IAAI,YAAY,CAAC,YAAY,GAAG,CAAC;AAExD,SAAO;AACT;AAEO,SAAS,MAAS,UAA4B,MAA0D;AAC7G,QAAM,QAAQ,gBAAA;AAEd,SAAO,YAAY,UAAU,OAAO,IAAI;AAC1C;AAEO,MAAM,OAAO,CAClB,IACA,SAC0B;AAC1B,QAAM,QAAQ,gBAAA;AAEd,SAAO,WAAW,IAAI,OAAO,IAAI;AACnC;AAEO,SAAS,QAAW,IAAa,MAA8E;AACpH,QAAM,MAAM,yBAAyB,MAAM,IAAI,MAAM,MAAM,IAAI,MAAM,QAAQ,OAAO,QAAW,MAAM,MAAM;AAE3G,QAAM,QAAQ,MAAM,UAAU,IAAI,YAAY,CAAA,CAAE,IAAI,gBAAA;AAEpD,SAAO,qBAAqB,KAAK,QAAW,QAAW,KAAK;AAC9D;AAUO,MAAM,iBAAiB,CAC5B,SACA,SACsB;AACtB,QAAM,MAAM,yBAAyB,MAAM,IAAI,MAAM,MAAM,SAAS,MAAM,QAAQ,OAAO,QAAW,MAAS;AAE7G,QAAM,QAAQ,MAAM,UAAU,IAAI,YAAY,CAAA,CAAE,IAAI,gBAAA;AAEpD,SAAO,qBAAqB,KAAK,QAAW,QAAW,KAAK;AAC9D;"}
|
|
@@ -431,6 +431,7 @@ function watchActiveSignal(signal2) {
|
|
|
431
431
|
const { watchCount } = signal2;
|
|
432
432
|
const newWatchCount = watchCount + 1;
|
|
433
433
|
signal2.watchCount = newWatchCount;
|
|
434
|
+
cancelDeactivate(signal2);
|
|
434
435
|
if (signal2._isActive) {
|
|
435
436
|
return;
|
|
436
437
|
}
|
|
@@ -453,7 +454,6 @@ function watchSuspendedSignal(signal2) {
|
|
|
453
454
|
const newSuspendCount = suspendCount + 1;
|
|
454
455
|
signal2.watchCount = newWatchCount;
|
|
455
456
|
signal2.suspendCount = newSuspendCount;
|
|
456
|
-
signal2.scope?.removeFromGc(signal2);
|
|
457
457
|
cancelDeactivate(signal2);
|
|
458
458
|
if (watchCount === 0) {
|
|
459
459
|
for (const dep of signal2.deps.keys()) {
|
|
@@ -475,6 +475,7 @@ function resumeSignal(signal2) {
|
|
|
475
475
|
const { watchCount, suspendCount } = signal2;
|
|
476
476
|
const newSuspendCount = Math.max(suspendCount - 1, 0);
|
|
477
477
|
signal2.suspendCount = newSuspendCount;
|
|
478
|
+
cancelDeactivate(signal2);
|
|
478
479
|
if (watchCount > 0 && !signal2._isActive) {
|
|
479
480
|
for (const dep of signal2.deps.keys()) {
|
|
480
481
|
resumeSignal(dep);
|
|
@@ -556,6 +557,7 @@ const scheduleDeactivate = (signal2) => {
|
|
|
556
557
|
scheduleFlush();
|
|
557
558
|
};
|
|
558
559
|
const cancelDeactivate = (signal2) => {
|
|
560
|
+
signal2.scope?.removeFromGc(signal2);
|
|
559
561
|
PENDING_DEACTIVE.delete(signal2);
|
|
560
562
|
};
|
|
561
563
|
const scheduleListeners = (signal2) => {
|
|
@@ -1119,8 +1121,11 @@ class ReactivePromiseImpl {
|
|
|
1119
1121
|
}
|
|
1120
1122
|
}
|
|
1121
1123
|
}
|
|
1124
|
+
_getPending() {
|
|
1125
|
+
return (this._flags & 1) !== 0;
|
|
1126
|
+
}
|
|
1122
1127
|
_setPending() {
|
|
1123
|
-
if (
|
|
1128
|
+
if (this._getPending()) {
|
|
1124
1129
|
return this._awaitSubs;
|
|
1125
1130
|
}
|
|
1126
1131
|
this._setFlags(
|
|
@@ -1131,11 +1136,7 @@ class ReactivePromiseImpl {
|
|
|
1131
1136
|
return this._awaitSubs = /* @__PURE__ */ new Map();
|
|
1132
1137
|
}
|
|
1133
1138
|
_clearPending() {
|
|
1134
|
-
this.
|
|
1135
|
-
0,
|
|
1136
|
-
1
|
|
1137
|
-
/* Pending */
|
|
1138
|
-
);
|
|
1139
|
+
this._setValue(this._value);
|
|
1139
1140
|
}
|
|
1140
1141
|
async _setPromise(promise) {
|
|
1141
1142
|
this._promise = promise;
|
|
@@ -1490,7 +1491,7 @@ function checkSignal(signal2) {
|
|
|
1490
1491
|
while (edge !== void 0) {
|
|
1491
1492
|
if (edge.type === EdgeType.Promise) {
|
|
1492
1493
|
const dep2 = edge.dep;
|
|
1493
|
-
if (dep2.
|
|
1494
|
+
if (dep2._getPending()) {
|
|
1494
1495
|
const value = signal2._value;
|
|
1495
1496
|
dep2["_awaitSubs"].set(ref, edge);
|
|
1496
1497
|
value._setPending();
|
|
@@ -1611,30 +1612,22 @@ function hashStr(key, seed = 0) {
|
|
|
1611
1612
|
const c1 = 3432918353;
|
|
1612
1613
|
const c2 = 461845907;
|
|
1613
1614
|
let i = 0;
|
|
1614
|
-
while (i +
|
|
1615
|
-
let
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
h ^=
|
|
1615
|
+
while (i + 2 <= key.length) {
|
|
1616
|
+
let k = key.charCodeAt(i) & 65535 | (key.charCodeAt(i + 1) & 65535) << 16;
|
|
1617
|
+
k = imul(k, c1);
|
|
1618
|
+
k = k << 15 | k >>> 17;
|
|
1619
|
+
k = imul(k, c2);
|
|
1620
|
+
h ^= k;
|
|
1620
1621
|
h = h << 13 | h >>> 19;
|
|
1621
1622
|
h = imul(h, 5) + 3864292196;
|
|
1622
|
-
i +=
|
|
1623
|
-
}
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
k ^= (key.charCodeAt(i + 1) & 255) << 8;
|
|
1631
|
-
// eslint-disable-next-line no-fallthrough
|
|
1632
|
-
case 1:
|
|
1633
|
-
k ^= key.charCodeAt(i) & 255;
|
|
1634
|
-
k = imul(k, c1);
|
|
1635
|
-
k = k << 15 | k >>> 17;
|
|
1636
|
-
k = imul(k, c2);
|
|
1637
|
-
h ^= k;
|
|
1623
|
+
i += 2;
|
|
1624
|
+
}
|
|
1625
|
+
if (key.length & 1) {
|
|
1626
|
+
let k = key.charCodeAt(i) & 65535;
|
|
1627
|
+
k = imul(k, c1);
|
|
1628
|
+
k = k << 15 | k >>> 17;
|
|
1629
|
+
k = imul(k, c2);
|
|
1630
|
+
h ^= k;
|
|
1638
1631
|
}
|
|
1639
1632
|
h ^= key.length;
|
|
1640
1633
|
h ^= h >>> 16;
|
|
@@ -1645,8 +1638,9 @@ function hashStr(key, seed = 0) {
|
|
|
1645
1638
|
return h >>> 0;
|
|
1646
1639
|
}
|
|
1647
1640
|
function hashNumber(num, seed = 0) {
|
|
1641
|
+
let h = num < 0 ? seed ^ 2147483648 : seed;
|
|
1648
1642
|
num = abs(num);
|
|
1649
|
-
|
|
1643
|
+
const origNum = num;
|
|
1650
1644
|
const c1 = 3432918353;
|
|
1651
1645
|
const c2 = 461845907;
|
|
1652
1646
|
while (num >= 4294967295) {
|
|
@@ -1666,7 +1660,7 @@ function hashNumber(num, seed = 0) {
|
|
|
1666
1660
|
k = imul(k, c2);
|
|
1667
1661
|
h ^= k;
|
|
1668
1662
|
}
|
|
1669
|
-
const numBytes =
|
|
1663
|
+
const numBytes = origNum === 0 ? 1 : floor(log(origNum) / log(256)) + 1;
|
|
1670
1664
|
h ^= numBytes;
|
|
1671
1665
|
h ^= h >>> 16;
|
|
1672
1666
|
h = imul(h, 2246822507);
|
|
@@ -1675,12 +1669,12 @@ function hashNumber(num, seed = 0) {
|
|
|
1675
1669
|
h ^= h >>> 16;
|
|
1676
1670
|
return h >>> 0;
|
|
1677
1671
|
}
|
|
1678
|
-
function hashArray(arr) {
|
|
1679
|
-
let h =
|
|
1672
|
+
function hashArray(arr, seen) {
|
|
1673
|
+
let h = ARRAY;
|
|
1680
1674
|
const c1 = 3432918353;
|
|
1681
1675
|
const c2 = 461845907;
|
|
1682
1676
|
for (const item of arr) {
|
|
1683
|
-
let k = hashValue(item);
|
|
1677
|
+
let k = hashValue(item, seen);
|
|
1684
1678
|
k = imul(k, c1);
|
|
1685
1679
|
k = k << 15 | k >>> 17;
|
|
1686
1680
|
k = imul(k, c2);
|
|
@@ -1696,36 +1690,36 @@ function hashArray(arr) {
|
|
|
1696
1690
|
h ^= h >>> 16;
|
|
1697
1691
|
return h >>> 0;
|
|
1698
1692
|
}
|
|
1699
|
-
function hashObject(obj) {
|
|
1693
|
+
function hashObject(obj, seen) {
|
|
1700
1694
|
let sum = OBJECT;
|
|
1701
1695
|
const keys = Object.keys(obj);
|
|
1702
1696
|
for (const key of keys) {
|
|
1703
|
-
sum += hashValue(key) ^ hashValue(obj[key]);
|
|
1697
|
+
sum += imul(hashValue(key, seen), 2654435769) ^ hashValue(obj[key], seen);
|
|
1704
1698
|
}
|
|
1705
1699
|
return sum >>> 0;
|
|
1706
1700
|
}
|
|
1707
|
-
function hashSet(set) {
|
|
1708
|
-
let sum =
|
|
1701
|
+
function hashSet(set, seen) {
|
|
1702
|
+
let sum = SET;
|
|
1709
1703
|
for (const value of set) {
|
|
1710
|
-
sum += hashValue(value);
|
|
1704
|
+
sum += hashValue(value, seen);
|
|
1711
1705
|
}
|
|
1712
1706
|
return sum >>> 0;
|
|
1713
1707
|
}
|
|
1714
|
-
function hashMap(map) {
|
|
1715
|
-
let sum =
|
|
1708
|
+
function hashMap(map, seen) {
|
|
1709
|
+
let sum = MAP;
|
|
1716
1710
|
for (const [key, value] of map) {
|
|
1717
|
-
sum += hashValue(key) ^ hashValue(value);
|
|
1711
|
+
sum += imul(hashValue(key, seen), 2654435769) ^ hashValue(value, seen);
|
|
1718
1712
|
}
|
|
1719
1713
|
return sum >>> 0;
|
|
1720
1714
|
}
|
|
1721
|
-
function hashDate(date) {
|
|
1715
|
+
function hashDate(date, _seen) {
|
|
1722
1716
|
return hashNumber(
|
|
1723
1717
|
date.getTime(),
|
|
1724
1718
|
14
|
|
1725
1719
|
/* DATE */
|
|
1726
1720
|
);
|
|
1727
1721
|
}
|
|
1728
|
-
function hashRegExp(regexp) {
|
|
1722
|
+
function hashRegExp(regexp, _seen) {
|
|
1729
1723
|
const h = hashStr(
|
|
1730
1724
|
regexp.source + regexp.flags,
|
|
1731
1725
|
15
|
|
@@ -1753,7 +1747,7 @@ const FALSE = hashStr(
|
|
|
1753
1747
|
3
|
|
1754
1748
|
/* FALSE */
|
|
1755
1749
|
);
|
|
1756
|
-
hashStr(
|
|
1750
|
+
const ARRAY = hashStr(
|
|
1757
1751
|
"array",
|
|
1758
1752
|
7
|
|
1759
1753
|
/* ARRAY */
|
|
@@ -1763,6 +1757,16 @@ const OBJECT = hashStr(
|
|
|
1763
1757
|
8
|
|
1764
1758
|
/* OBJECT */
|
|
1765
1759
|
);
|
|
1760
|
+
const SET = hashStr(
|
|
1761
|
+
"set",
|
|
1762
|
+
13
|
|
1763
|
+
/* SET */
|
|
1764
|
+
);
|
|
1765
|
+
const MAP = hashStr(
|
|
1766
|
+
"map",
|
|
1767
|
+
12
|
|
1768
|
+
/* MAP */
|
|
1769
|
+
);
|
|
1766
1770
|
const getObjectProto = Object.getPrototypeOf;
|
|
1767
1771
|
const PROTO_TO_HASH = /* @__PURE__ */ new Map([
|
|
1768
1772
|
[Object.prototype, hashObject],
|
|
@@ -1773,7 +1777,7 @@ const PROTO_TO_HASH = /* @__PURE__ */ new Map([
|
|
|
1773
1777
|
[RegExp.prototype, hashRegExp]
|
|
1774
1778
|
]);
|
|
1775
1779
|
const registerCustomHash = (ctor, hashFn) => {
|
|
1776
|
-
PROTO_TO_HASH.set(ctor.prototype, hashFn);
|
|
1780
|
+
PROTO_TO_HASH.set(ctor.prototype, (obj, _seen) => hashFn(obj));
|
|
1777
1781
|
};
|
|
1778
1782
|
function hashValue(node, seen = []) {
|
|
1779
1783
|
switch (typeof node) {
|
|
@@ -1814,7 +1818,7 @@ function hashValue(node, seen = []) {
|
|
|
1814
1818
|
const hashFn = PROTO_TO_HASH.get(getObjectProto(node));
|
|
1815
1819
|
if (hashFn) {
|
|
1816
1820
|
seen.push(node);
|
|
1817
|
-
const hash = hashFn(node);
|
|
1821
|
+
const hash = hashFn(node, seen);
|
|
1818
1822
|
seen.pop();
|
|
1819
1823
|
return hash;
|
|
1820
1824
|
}
|
|
@@ -1844,9 +1848,16 @@ function getObjectHash(obj) {
|
|
|
1844
1848
|
}
|
|
1845
1849
|
return id;
|
|
1846
1850
|
}
|
|
1847
|
-
const EMPTY_ARRAY_HASH = hashArray([]);
|
|
1851
|
+
const EMPTY_ARRAY_HASH = hashArray([], []);
|
|
1848
1852
|
function hashReactiveFn(fn, args) {
|
|
1849
|
-
|
|
1853
|
+
const argsHash = args.length > 0 ? hashArray(args, []) : EMPTY_ARRAY_HASH;
|
|
1854
|
+
let k = imul(argsHash, 3432918353);
|
|
1855
|
+
k = k << 15 | k >>> 17;
|
|
1856
|
+
k = imul(k, 461845907);
|
|
1857
|
+
let h = getObjectHash(fn);
|
|
1858
|
+
h ^= k;
|
|
1859
|
+
h = h << 13 | h >>> 19;
|
|
1860
|
+
return imul(h, 5) + 3864292196 >>> 0;
|
|
1850
1861
|
}
|
|
1851
1862
|
const objectToIdMap = /* @__PURE__ */ new WeakMap();
|
|
1852
1863
|
let nextId = 1;
|
|
@@ -2261,4 +2272,4 @@ export {
|
|
|
2261
2272
|
withContexts as y,
|
|
2262
2273
|
setGlobalContexts as z
|
|
2263
2274
|
};
|
|
2264
|
-
//# sourceMappingURL=debug-
|
|
2275
|
+
//# sourceMappingURL=debug-E2E1pZe5.js.map
|