@solidjs/signals 2.0.0-rc.2 → 2.0.0-rc.20
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-shared.js +6505 -0
- package/dist/dev.attribution.js +3484 -0
- package/dist/dev.js +10227 -9508
- package/dist/observe/affects-marks.js +86 -0
- package/dist/observe/affects.js +112 -0
- package/dist/observe/attribution.js +7 -0
- package/dist/observe/boundaries.js +696 -0
- package/dist/observe/core/action.js +182 -0
- package/dist/observe/core/async.js +824 -0
- package/dist/observe/core/attribution-costs.js +66 -0
- package/dist/observe/core/attribution-feedback.js +280 -0
- package/dist/observe/core/attribution-hooks.js +83 -0
- package/dist/observe/core/attribution-queries.js +43 -0
- package/dist/observe/core/attribution.js +3079 -0
- package/dist/observe/core/constants.js +269 -0
- package/dist/observe/core/context.js +63 -0
- package/dist/observe/core/copies.js +10 -0
- package/dist/observe/core/core.js +1707 -0
- package/dist/observe/core/dev.js +394 -0
- package/dist/observe/core/effect.js +193 -0
- package/dist/observe/core/error-hooks.js +71 -0
- package/dist/observe/core/error.js +82 -0
- package/dist/observe/core/external.js +97 -0
- package/dist/observe/core/graph.js +162 -0
- package/dist/observe/core/heap.js +124 -0
- package/dist/observe/core/identities.js +62 -0
- package/dist/observe/core/invariants.js +12 -0
- package/dist/observe/core/lanes.js +972 -0
- package/dist/observe/core/owner.js +371 -0
- package/dist/observe/core/scheduler.js +1157 -0
- package/dist/observe/core/truth.js +47 -0
- package/dist/observe/core/verdict.js +470 -0
- package/dist/observe/deferred.js +186 -0
- package/dist/observe/flatten.js +79 -0
- package/dist/observe/from.js +248 -0
- package/dist/observe/index.js +71 -0
- package/dist/observe/map.js +593 -0
- package/dist/observe/reveal.js +212 -0
- package/dist/observe/signals.js +717 -0
- package/dist/observe/store/affects.js +142 -0
- package/dist/observe/store/edges.js +39 -0
- package/dist/observe/store/hooks.js +16 -0
- package/dist/observe/store/index.js +47 -0
- package/dist/observe/store/optimistic.js +713 -0
- package/dist/observe/store/projection.js +345 -0
- package/dist/observe/store/reconcile.js +281 -0
- package/dist/observe/store/store.js +2127 -0
- package/dist/observe/store/storePath.js +103 -0
- package/dist/observe/store/target.js +46 -0
- package/dist/observe/store/types.js +83 -0
- package/dist/observe/store/utils.js +1063 -0
- package/dist/prod/affects-marks.js +86 -0
- package/dist/prod/affects.js +98 -112
- package/dist/prod/attribution.js +45 -0
- package/dist/prod/boundaries.js +578 -468
- package/dist/prod/core/action.js +92 -59
- package/dist/prod/core/async.js +522 -336
- package/dist/prod/core/attribution-hooks.js +3 -0
- package/dist/prod/core/constants.js +168 -44
- package/dist/prod/core/context.js +12 -16
- package/dist/prod/core/copies.js +10 -0
- package/dist/prod/core/core.js +1345 -627
- package/dist/prod/core/dev.js +123 -1
- package/dist/prod/core/effect.js +113 -80
- package/dist/prod/core/error-hooks.js +71 -0
- package/dist/prod/core/error.js +18 -4
- package/dist/prod/core/external.js +6 -7
- package/dist/prod/core/graph.js +119 -72
- package/dist/prod/core/heap.js +85 -109
- package/dist/prod/core/identities.js +62 -0
- package/dist/prod/core/invariants.js +1 -32
- package/dist/prod/core/lanes.js +931 -132
- package/dist/prod/core/owner.js +192 -129
- package/dist/prod/core/scheduler.js +948 -642
- package/dist/prod/core/truth.js +47 -0
- package/dist/prod/core/verdict.js +409 -420
- package/dist/prod/deferred.js +184 -0
- package/dist/prod/flatten.js +77 -0
- package/dist/prod/from.js +248 -0
- package/dist/prod/index.js +40 -16
- package/dist/prod/map.js +481 -211
- package/dist/prod/reveal.js +212 -0
- package/dist/prod/signals.js +401 -84
- package/dist/prod/store/affects.js +142 -0
- package/dist/prod/store/edges.js +39 -0
- package/dist/prod/store/hooks.js +16 -0
- package/dist/prod/store/index.js +27 -18
- package/dist/prod/store/optimistic.js +707 -0
- package/dist/prod/store/projection.js +331 -0
- package/dist/prod/store/reconcile.js +281 -0
- package/dist/prod/store/store.js +1952 -267
- package/dist/prod/store/storePath.js +1 -1
- package/dist/prod/store/target.js +43 -0
- package/dist/prod/store/types.js +83 -0
- package/dist/prod/store/utils.js +997 -138
- package/dist/types/affects-marks.d.ts +14 -0
- package/dist/types/affects.d.ts +12 -30
- package/dist/types/attribution.d.ts +19 -0
- package/dist/types/attribution.prod.d.ts +22 -0
- package/dist/types/boundaries.d.ts +99 -124
- package/dist/types/carved.d.ts +1 -0
- package/dist/types/core/action.d.ts +23 -9
- package/dist/types/core/async.d.ts +34 -6
- package/dist/types/core/attribution-costs.d.ts +35 -0
- package/dist/types/core/attribution-feedback.d.ts +133 -0
- package/dist/types/core/attribution-hooks.d.ts +307 -8
- package/dist/types/core/attribution-queries.d.ts +24 -0
- package/dist/types/core/attribution.d.ts +802 -72
- package/dist/types/core/constants.d.ts +195 -38
- package/dist/types/core/copies.d.ts +54 -0
- package/dist/types/core/core.d.ts +295 -65
- package/dist/types/core/dev.d.ts +509 -22
- package/dist/types/core/effect.d.ts +1 -1
- package/dist/types/core/error-hooks.d.ts +71 -0
- package/dist/types/core/error.d.ts +18 -1
- package/dist/types/core/graph.d.ts +40 -1
- package/dist/types/core/heap.d.ts +5 -5
- package/dist/types/core/identities.d.ts +17 -0
- package/dist/types/core/index.d.ts +11 -7
- package/dist/types/core/invariants.d.ts +1 -26
- package/dist/types/core/lanes.d.ts +74 -43
- package/dist/types/core/owner.d.ts +27 -9
- package/dist/types/core/scheduler.d.ts +353 -102
- package/dist/types/core/truth.d.ts +18 -0
- package/dist/types/core/types.d.ts +97 -71
- package/dist/types/core/verdict.d.ts +35 -0
- package/dist/types/deferred.d.ts +28 -0
- package/dist/types/flatten.d.ts +8 -0
- package/dist/types/from.d.ts +47 -0
- package/dist/types/index.d.ts +33 -7
- package/dist/types/map.d.ts +4 -2
- package/dist/types/reveal.d.ts +19 -0
- package/dist/types/signals.d.ts +196 -45
- package/dist/types/store/affects.d.ts +12 -0
- package/dist/types/store/edges.d.ts +9 -0
- package/dist/types/store/hooks.d.ts +62 -0
- package/dist/types/store/index.d.ts +42 -15
- package/dist/types/store/optimistic.d.ts +24 -45
- package/dist/types/store/projection.d.ts +17 -68
- package/dist/types/store/reconcile.d.ts +3 -46
- package/dist/types/store/store.d.ts +133 -136
- package/dist/types/store/storePath.d.ts +1 -1
- package/dist/types/store/target.d.ts +166 -0
- package/dist/types/store/types.d.ts +105 -0
- package/dist/types/store/utils.d.ts +188 -0
- package/package.json +31 -26
- package/dist/node.cjs +0 -8745
- package/dist/prod/core/optimistic.js +0 -265
- package/dist/prod/store/next/optimistic.js +0 -385
- package/dist/prod/store/next/projection.js +0 -172
- package/dist/prod/store/next/reconcile.js +0 -331
- package/dist/prod/store/next/store.js +0 -1499
- package/dist/prod/store/next/target.js +0 -20
- package/dist/types/core/optimistic.d.ts +0 -6
- package/dist/types/store/next/optimistic.d.ts +0 -20
- package/dist/types/store/next/projection.d.ts +0 -8
- package/dist/types/store/next/reconcile.d.ts +0 -3
- package/dist/types/store/next/store.d.ts +0 -77
- package/dist/types/store/next/target.d.ts +0 -117
- package/dist/types-cjs/affects.d.cts +0 -47
- package/dist/types-cjs/boundaries.d.cts +0 -175
- package/dist/types-cjs/core/action.d.cts +0 -64
- package/dist/types-cjs/core/async.d.cts +0 -21
- package/dist/types-cjs/core/attribution-hooks.d.cts +0 -52
- package/dist/types-cjs/core/attribution.d.cts +0 -186
- package/dist/types-cjs/core/constants.d.cts +0 -97
- package/dist/types-cjs/core/context.d.cts +0 -36
- package/dist/types-cjs/core/core.d.cts +0 -163
- package/dist/types-cjs/core/dev.d.cts +0 -81
- package/dist/types-cjs/core/effect.d.cts +0 -30
- package/dist/types-cjs/core/error.d.cts +0 -47
- package/dist/types-cjs/core/external.d.cts +0 -15
- package/dist/types-cjs/core/graph.d.cts +0 -6
- package/dist/types-cjs/core/heap.d.cts +0 -22
- package/dist/types-cjs/core/index.d.cts +0 -13
- package/dist/types-cjs/core/invariants.d.cts +0 -59
- package/dist/types-cjs/core/lanes.d.cts +0 -44
- package/dist/types-cjs/core/optimistic.d.cts +0 -6
- package/dist/types-cjs/core/owner.d.cts +0 -124
- package/dist/types-cjs/core/scheduler.d.cts +0 -180
- package/dist/types-cjs/core/types.d.cts +0 -192
- package/dist/types-cjs/core/verdict.d.cts +0 -2
- package/dist/types-cjs/index.d.cts +0 -10
- package/dist/types-cjs/map.d.cts +0 -69
- package/dist/types-cjs/package.json +0 -3
- package/dist/types-cjs/signals.d.cts +0 -624
- package/dist/types-cjs/store/index.d.cts +0 -19
- package/dist/types-cjs/store/next/optimistic.d.cts +0 -20
- package/dist/types-cjs/store/next/projection.d.cts +0 -8
- package/dist/types-cjs/store/next/reconcile.d.cts +0 -3
- package/dist/types-cjs/store/next/store.d.cts +0 -77
- package/dist/types-cjs/store/next/target.d.cts +0 -117
- package/dist/types-cjs/store/optimistic.d.cts +0 -45
- package/dist/types-cjs/store/projection.d.cts +0 -70
- package/dist/types-cjs/store/reconcile.d.cts +0 -46
- package/dist/types-cjs/store/store.d.cts +0 -138
- package/dist/types-cjs/store/storePath.d.cts +0 -58
- package/dist/types-cjs/store/utils.d.cts +0 -74
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ownership stamp (#3360): every backing the store ALLOCATES (CoW clones,
|
|
3
|
+
* privatized committed backings) carries its owning target under this
|
|
4
|
+
* enumerable symbol. One property write replaces the two weak-collection
|
|
5
|
+
* registrations (ownership set + raw→target map) a fresh object used to pay
|
|
6
|
+
* per draft — V8's identity-hash + ephemeron cost dominated the one-key
|
|
7
|
+
* write floor. Enumerable so a spread copy (the plain-data clone path) stays
|
|
8
|
+
* on the fast path and carries the stamp along.
|
|
9
|
+
*
|
|
10
|
+
* Owned backings are never user-reachable (`snapshot` copies them, the traps
|
|
11
|
+
* hide the key), so every raw key walk in the store must skip `$OWNER`, and
|
|
12
|
+
* ownership is answered by `isOwned` — a user object never carries it.
|
|
13
|
+
* Overlay drafts (`Object.create(v)` over an owned `v`) inherit the stamp.
|
|
14
|
+
*/
|
|
15
|
+
const $OWNER = Symbol(0);
|
|
16
|
+
|
|
17
|
+
/** raw → target for plain (family-less) stores. Family stores use their own
|
|
18
|
+
* map so one raw can wrap once per family (§7b). */ const storeLookup = new WeakMap;
|
|
19
|
+
|
|
20
|
+
function setLookup(o, e) {
|
|
21
|
+
(e.fam?.map ?? storeLookup).set(o, e);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function isOwned(o) {
|
|
25
|
+
return o[$OWNER] !== undefined;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/** The target wrapping `raw` in `fam` (or the plain lookup). An owned raw
|
|
29
|
+
* answers from its stamp; a user raw from the map. */ function lookupTarget(o, e) {
|
|
30
|
+
const n = o[$OWNER];
|
|
31
|
+
return n !== undefined && n.fam === e ? n : (e?.map ?? storeLookup).get(o);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/** Sticky descendants flag up the parent chain (§6d): adoption descends
|
|
35
|
+
* into a changed child pair only where a target with nodes exists below. */ function markDescendants(o) {
|
|
36
|
+
let e = o;
|
|
37
|
+
while (e && !e.d) {
|
|
38
|
+
e.d = true;
|
|
39
|
+
e = e.u;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export { $OWNER, isOwned, lookupTarget, markDescendants, setLookup, storeLookup };
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/** Brand keys the proxy answers directly (never user data). */
|
|
2
|
+
const $TRACK = Symbol(0), $TARGET = Symbol(0), $PROXY = Symbol(0), $RECORD = Symbol(0);
|
|
3
|
+
|
|
4
|
+
// ---------------------------------------------------------------------------
|
|
5
|
+
// raw marking (R42 / RUL-12: a value is never both wrapped and raw)
|
|
6
|
+
const rawValues = new WeakSet;
|
|
7
|
+
|
|
8
|
+
let rawValuesUsed = false;
|
|
9
|
+
|
|
10
|
+
function isRawValue(e) {
|
|
11
|
+
return rawValuesUsed && rawValues.has(e);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/** Mark a value so no store ever wraps it (sticky; it reads as a leaf). */ function markRaw(e) {
|
|
15
|
+
if (isWrappable(e)) {
|
|
16
|
+
rawValuesUsed = true;
|
|
17
|
+
rawValues.add(e);
|
|
18
|
+
}
|
|
19
|
+
return e;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/** A shallow store's ingested record: raw by contract (values served
|
|
23
|
+
* verbatim, slots replaced by reference). */ function markRawOne(e) {
|
|
24
|
+
if (isWrappable(e)) {
|
|
25
|
+
if (e[$TARGET] !== undefined) return;
|
|
26
|
+
rawValuesUsed = true;
|
|
27
|
+
rawValues.add(e);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function markRawIngest(e) {
|
|
32
|
+
if (Array.isArray(e)) {
|
|
33
|
+
for (let r = 0, a = e.length; r < a; r++) markRawOne(e[r]);
|
|
34
|
+
} else {
|
|
35
|
+
for (const r in e) markRawOne(e[r]);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// ---------------------------------------------------------------------------
|
|
40
|
+
// wrappability
|
|
41
|
+
const OBJECT_PROTO = Object.prototype;
|
|
42
|
+
|
|
43
|
+
const wrappableProtos = new WeakMap;
|
|
44
|
+
|
|
45
|
+
function isWrappable(e) {
|
|
46
|
+
if (e == null || typeof e !== "object" || Object.isFrozen(e)) return false;
|
|
47
|
+
const r = Object.getPrototypeOf(e);
|
|
48
|
+
if (r === OBJECT_PROTO || r === null) return true;
|
|
49
|
+
if (Array.isArray(e)) return true;
|
|
50
|
+
let a = wrappableProtos.get(r);
|
|
51
|
+
if (a === undefined) {
|
|
52
|
+
a = Object.prototype.toString.call(e) === "[object Object]" && (typeof Node === "undefined" || !(e instanceof Node));
|
|
53
|
+
wrappableProtos.set(r, a);
|
|
54
|
+
}
|
|
55
|
+
return a;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function ownEnumerableKeys(e) {
|
|
59
|
+
return Reflect.ownKeys(e).filter(r => Object.prototype.propertyIsEnumerable.call(e, r));
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// ---------------------------------------------------------------------------
|
|
63
|
+
// write override: a projection's draft ops carry it (the derive is the
|
|
64
|
+
// author — its writes must land outside the sync setter scope too, in a
|
|
65
|
+
// continuation after an `await`/`yield`). Projections return in S3; the
|
|
66
|
+
// traps already honour it.
|
|
67
|
+
let writeOverride = false;
|
|
68
|
+
|
|
69
|
+
function setWriteOverride(e) {
|
|
70
|
+
writeOverride = e;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/** The list driver's view of a shallow store (map.ts): the backing a read of
|
|
74
|
+
* every slot serves this reader, or `undefined` when the list is no shallow
|
|
75
|
+
* store or a slot read could differ from it. Installed by store.ts's top
|
|
76
|
+
* level, so a `<For>` in an app without stores carries none of it; it lives
|
|
77
|
+
* beside `$TRACK` so map.ts reaches no other store module. */ let shallowView = null;
|
|
78
|
+
|
|
79
|
+
function installShallowView(e) {
|
|
80
|
+
shallowView = e;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export { $PROXY, $RECORD, $TARGET, $TRACK, installShallowView, isRawValue, isWrappable, markRaw, markRawIngest, markRawOne, ownEnumerableKeys, rawValuesUsed, setWriteOverride, shallowView, writeOverride };
|