@solidjs/signals 2.0.0-beta.24 → 2.0.0-beta.26
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/dev.js +577 -87
- package/dist/node.cjs +1120 -683
- package/dist/prod/core/async.js +180 -107
- package/dist/prod/core/core.js +214 -180
- package/dist/prod/core/effect.js +19 -19
- package/dist/prod/core/external.js +4 -4
- package/dist/prod/core/graph.js +25 -25
- package/dist/prod/core/heap.js +23 -23
- package/dist/prod/core/lanes.js +15 -15
- package/dist/prod/core/optimistic.js +42 -40
- package/dist/prod/core/owner.js +41 -41
- package/dist/prod/core/scheduler.js +90 -90
- package/dist/prod/core/verdict.js +54 -54
- package/dist/prod/map.js +60 -60
- package/dist/prod/signals.js +1 -1
- package/dist/prod/store/optimistic.js +18 -11
- package/dist/prod/store/projection.js +25 -18
- package/dist/prod/store/reconcile.js +405 -211
- package/dist/prod/store/store.js +225 -105
- package/dist/prod/store/utils.js +22 -22
- package/dist/types/core/async.d.ts +1 -0
- package/dist/types/core/core.d.ts +15 -0
- package/dist/types/store/optimistic.d.ts +1 -1
- package/dist/types/store/store.d.ts +20 -2
- package/dist/types-cjs/core/async.d.cts +1 -0
- package/dist/types-cjs/core/core.d.cts +15 -0
- package/dist/types-cjs/store/optimistic.d.cts +1 -1
- package/dist/types-cjs/store/store.d.cts +20 -2
- package/package.json +1 -1
|
@@ -14,14 +14,21 @@ import { CONFIG_AUTO_DISPOSE } from "../core/constants.js";
|
|
|
14
14
|
|
|
15
15
|
import { reconcile } from "./reconcile.js";
|
|
16
16
|
|
|
17
|
-
import { storeSetter, $TARGET, STORE_WRAP, createStoreProxy, storeTraps, setWriteOverride, STORE_LOOKUP, STORE_FIREWALL } from "./store.js";
|
|
17
|
+
import { storeSetter, $TARGET, STORE_WRAP, createStoreProxy, storeTraps, setWriteOverride, STORE_LOOKUP, STORE_SHALLOW, markRawIngest, STORE_VALUE, STORE_FIREWALL } from "./store.js";
|
|
18
18
|
|
|
19
19
|
function createProjectionInternal(e, r, t) {
|
|
20
20
|
let o;
|
|
21
|
-
const
|
|
21
|
+
const n = new WeakMap;
|
|
22
|
+
// A shallow projection's children are raw and never wrapped, so the
|
|
23
|
+
// wrapper only ever runs for the root — flagging unconditionally is safe.
|
|
24
|
+
const i = !!t?.shallow;
|
|
22
25
|
const wrapper = e => {
|
|
23
26
|
e[STORE_WRAP] = wrapProjection;
|
|
24
|
-
e[STORE_LOOKUP] =
|
|
27
|
+
e[STORE_LOOKUP] = n;
|
|
28
|
+
if (i) {
|
|
29
|
+
e[STORE_SHALLOW] = true;
|
|
30
|
+
markRawIngest(e[STORE_VALUE]);
|
|
31
|
+
}
|
|
25
32
|
Object.defineProperty(e, STORE_FIREWALL, {
|
|
26
33
|
get() {
|
|
27
34
|
return o;
|
|
@@ -30,20 +37,20 @@ function createProjectionInternal(e, r, t) {
|
|
|
30
37
|
});
|
|
31
38
|
};
|
|
32
39
|
const wrapProjection = e => {
|
|
33
|
-
if (
|
|
40
|
+
if (n.has(e)) return n.get(e);
|
|
34
41
|
if (e[$TARGET]?.[STORE_WRAP] === wrapProjection) return e;
|
|
35
42
|
const r = createStoreProxy(e, storeTraps, wrapper);
|
|
36
|
-
|
|
43
|
+
n.set(e, r);
|
|
37
44
|
return r;
|
|
38
45
|
};
|
|
39
|
-
const
|
|
46
|
+
const c = wrapProjection(r);
|
|
40
47
|
o = computed(() => {
|
|
41
48
|
if (!o) o = getOwner();
|
|
42
|
-
runProjectionComputed(
|
|
49
|
+
runProjectionComputed(c, e, t?.key || "id");
|
|
43
50
|
}, undefined);
|
|
44
51
|
o.T &= ~CONFIG_AUTO_DISPOSE;
|
|
45
52
|
return {
|
|
46
|
-
store:
|
|
53
|
+
store: c,
|
|
47
54
|
node: o
|
|
48
55
|
};
|
|
49
56
|
}
|
|
@@ -106,22 +113,22 @@ function createProjectionInternal(e, r, t) {
|
|
|
106
113
|
* re-enters `setProjectionWriteActive` so reconciles target `STORE_OVERRIDE`
|
|
107
114
|
* instead of `STORE_OPTIMISTIC_OVERRIDE` even when an async yield fires outside
|
|
108
115
|
* the outer `setProjectionWriteActive` scope.
|
|
109
|
-
*/ function runProjectionComputed(e, r, t, o,
|
|
110
|
-
const
|
|
116
|
+
*/ function runProjectionComputed(e, r, t, o, n) {
|
|
117
|
+
const i = getOwner();
|
|
111
118
|
let c = false;
|
|
112
119
|
let s;
|
|
113
|
-
const u = new Proxy(e, createWriteTraps(() => !c ||
|
|
114
|
-
storeSetter(u,
|
|
115
|
-
s = r(
|
|
120
|
+
const u = new Proxy(e, createWriteTraps(() => !c || i.Te === s, n));
|
|
121
|
+
storeSetter(u, n => {
|
|
122
|
+
s = r(n);
|
|
116
123
|
c = true;
|
|
117
124
|
const commit = r => {
|
|
118
|
-
if (r ===
|
|
125
|
+
if (r === n || r === undefined) return;
|
|
119
126
|
const write = () => storeSetter(e, reconcile(r, t));
|
|
120
127
|
o ? o(write) : write();
|
|
121
128
|
};
|
|
122
|
-
commit(handleAsync(
|
|
129
|
+
commit(handleAsync(i, s, commit));
|
|
123
130
|
});
|
|
124
|
-
return
|
|
131
|
+
return i;
|
|
125
132
|
}
|
|
126
133
|
|
|
127
134
|
function createWriteTraps(e, r) {
|
|
@@ -151,12 +158,12 @@ function createWriteTraps(e, r) {
|
|
|
151
158
|
}
|
|
152
159
|
return t;
|
|
153
160
|
},
|
|
154
|
-
set(t, o,
|
|
161
|
+
set(t, o, n) {
|
|
155
162
|
if (e && !e()) return true;
|
|
156
163
|
setWriteOverride(true);
|
|
157
164
|
setProjectionWriteActive(true);
|
|
158
165
|
try {
|
|
159
|
-
t[o] =
|
|
166
|
+
t[o] = n;
|
|
160
167
|
r?.();
|
|
161
168
|
} finally {
|
|
162
169
|
setWriteOverride(false);
|