@solidjs/signals 2.0.0-rc.13 → 2.0.0-rc.14
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 +2000 -3768
- package/dist/dev.attribution.js +132 -79
- package/dist/dev.js +7226 -8488
- package/dist/observe/affects.js +125 -104
- package/dist/observe/boundaries.js +458 -665
- package/dist/observe/core/action.js +63 -66
- package/dist/observe/core/async.js +240 -383
- package/dist/observe/core/attribution-queries.js +1 -1
- package/dist/observe/core/attribution.js +240 -183
- package/dist/observe/core/constants.js +115 -187
- package/dist/observe/core/context.js +3 -3
- package/dist/observe/core/core.js +840 -1438
- package/dist/observe/core/dev.js +3 -3
- package/dist/observe/core/effect.js +75 -86
- package/dist/observe/core/external.js +5 -5
- package/dist/observe/core/graph.js +61 -70
- package/dist/observe/core/heap.js +75 -98
- package/dist/observe/core/invariants.js +1 -34
- package/dist/observe/core/lanes.js +704 -181
- package/dist/observe/core/owner.js +80 -101
- package/dist/observe/core/scheduler.js +708 -1351
- package/dist/observe/core/verdict.js +302 -621
- package/dist/observe/flatten.js +79 -0
- package/dist/observe/index.js +15 -13
- package/dist/observe/map.js +232 -235
- package/dist/observe/reveal.js +212 -0
- package/dist/observe/signals.js +133 -215
- package/dist/observe/store/affects.js +135 -0
- package/dist/observe/store/index.js +29 -24
- package/dist/observe/store/optimistic.js +538 -0
- package/dist/observe/store/projection.js +302 -0
- package/dist/observe/store/reconcile.js +257 -0
- package/dist/observe/store/store.js +1945 -277
- package/dist/observe/store/storePath.js +1 -1
- package/dist/{prod/store/next → observe/store}/target.js +17 -18
- package/dist/observe/store/types.js +73 -0
- package/dist/observe/store/utils.js +1 -13
- package/dist/prod/affects.js +127 -106
- package/dist/prod/boundaries.js +442 -654
- package/dist/prod/core/action.js +71 -74
- package/dist/prod/core/async.js +307 -442
- package/dist/prod/core/constants.js +112 -186
- package/dist/prod/core/context.js +3 -3
- package/dist/prod/core/core.js +852 -1458
- package/dist/prod/core/effect.js +88 -99
- package/dist/prod/core/external.js +5 -5
- package/dist/prod/core/graph.js +61 -70
- package/dist/prod/core/heap.js +75 -98
- package/dist/prod/core/invariants.js +1 -32
- package/dist/prod/core/lanes.js +666 -181
- package/dist/prod/core/owner.js +75 -96
- package/dist/prod/core/scheduler.js +677 -1332
- package/dist/prod/core/verdict.js +297 -621
- package/dist/prod/flatten.js +77 -0
- package/dist/prod/index.js +15 -13
- package/dist/prod/map.js +143 -146
- package/dist/prod/reveal.js +212 -0
- package/dist/prod/signals.js +144 -226
- package/dist/prod/store/affects.js +135 -0
- package/dist/prod/store/index.js +28 -19
- package/dist/prod/store/optimistic.js +533 -0
- package/dist/prod/store/projection.js +295 -0
- package/dist/prod/store/reconcile.js +257 -0
- package/dist/prod/store/store.js +1840 -272
- package/dist/prod/store/storePath.js +1 -1
- package/dist/{observe/store/next → prod/store}/target.js +13 -17
- package/dist/prod/store/types.js +73 -0
- package/dist/prod/store/utils.js +1 -11
- package/dist/types/affects.d.ts +11 -30
- package/dist/types/boundaries.d.ts +62 -176
- package/dist/types/carved.d.ts +1 -0
- package/dist/types/core/action.d.ts +5 -6
- package/dist/types/core/async.d.ts +10 -5
- package/dist/types/core/attribution-hooks.d.ts +20 -1
- package/dist/types/core/attribution.d.ts +20 -9
- package/dist/types/core/constants.d.ts +125 -180
- package/dist/types/core/core.d.ts +104 -264
- package/dist/types/core/dev.d.ts +2 -2
- package/dist/types/core/effect.d.ts +0 -7
- package/dist/types/core/graph.d.ts +7 -1
- package/dist/types/core/heap.d.ts +5 -7
- package/dist/types/core/index.d.ts +5 -5
- package/dist/types/core/invariants.d.ts +0 -29
- package/dist/types/core/lanes.d.ts +65 -87
- package/dist/types/core/owner.d.ts +3 -3
- package/dist/types/core/scheduler.d.ts +249 -331
- package/dist/types/core/types.d.ts +51 -85
- package/dist/types/core/verdict.d.ts +3 -0
- package/dist/types/flatten.d.ts +8 -0
- package/dist/types/index.d.ts +6 -4
- package/dist/types/reveal.d.ts +19 -0
- package/dist/types/signals.d.ts +35 -91
- package/dist/types/store/affects.d.ts +1 -0
- package/dist/types/store/index.d.ts +35 -15
- package/dist/types/store/optimistic.d.ts +23 -0
- package/dist/types/store/projection.d.ts +18 -0
- package/dist/types/store/reconcile.d.ts +3 -0
- package/dist/types/store/store.d.ts +165 -143
- package/dist/types/store/storePath.d.ts +1 -1
- package/dist/types/store/target.d.ts +151 -0
- package/dist/types/store/types.d.ts +84 -0
- package/package.json +1 -1
- package/dist/observe/core/optimistic.js +0 -669
- package/dist/observe/store/next/optimistic.js +0 -717
- package/dist/observe/store/next/projection.js +0 -266
- package/dist/observe/store/next/reconcile.js +0 -375
- package/dist/observe/store/next/store.js +0 -2608
- package/dist/prod/core/optimistic.js +0 -658
- package/dist/prod/store/next/optimistic.js +0 -710
- package/dist/prod/store/next/projection.js +0 -257
- package/dist/prod/store/next/reconcile.js +0 -373
- package/dist/prod/store/next/store.js +0 -2484
- package/dist/types/core/optimistic.d.ts +0 -6
- package/dist/types/store/next/optimistic.d.ts +0 -25
- package/dist/types/store/next/projection.d.ts +0 -27
- package/dist/types/store/next/reconcile.d.ts +0 -10
- package/dist/types/store/next/store.d.ts +0 -145
- package/dist/types/store/next/target.d.ts +0 -196
|
@@ -4,20 +4,28 @@ export declare const REACTIVE_DIRTY: number;
|
|
|
4
4
|
export declare const REACTIVE_RECOMPUTING_DEPS: number;
|
|
5
5
|
export declare const REACTIVE_IN_HEAP: number;
|
|
6
6
|
export declare const REACTIVE_IN_HEAP_HEIGHT: number;
|
|
7
|
+
/** L2 — the node sits on its owner's parked frame (`_x._pendingFirstChild`):
|
|
8
|
+
* it is the displayed frame until the owner's commit disposes it. Set by
|
|
9
|
+
* `markDisposal` over the parked subtree; carried through every per-pass
|
|
10
|
+
* flag wipe (#3543). Scheduling reads it once, at the heap pop: a zombie's
|
|
11
|
+
* recompute is deferred past the seam (`deferZombie`). */
|
|
7
12
|
export declare const REACTIVE_ZOMBIE: number;
|
|
8
13
|
export declare const REACTIVE_DISPOSED: number;
|
|
9
|
-
|
|
14
|
+
/** L2 — this pass read the future (a tracked read of a CONFIG_HELD node).
|
|
15
|
+
* Lives for the pass only: set by `read`, consumed by `recompute`'s publish
|
|
16
|
+
* (a first pass that read the future is born held, A29), wiped with the
|
|
17
|
+
* pass's other per-pass bits. */
|
|
18
|
+
export declare const REACTIVE_JOINED: number;
|
|
10
19
|
export declare const REACTIVE_SNAPSHOT_STALE: number;
|
|
11
20
|
export declare const REACTIVE_LAZY: number;
|
|
12
21
|
export declare const REACTIVE_MANUAL_WRITE: number;
|
|
13
|
-
/**
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
|
|
20
|
-
export declare const REACTIVE_REASK: number;
|
|
22
|
+
/** L2, rule 3 — the node's LAST pass was a render effect's read of the
|
|
23
|
+
* future as committed (`frameRead`): the frame shows the committed world
|
|
24
|
+
* beside a future it also derives from, and re-derives at the landing.
|
|
25
|
+
* Survives its own pass's wipe; the next pass's wipe clears it (a pass that
|
|
26
|
+
* re-derived the frame — in the future, or without the held read — owes the
|
|
27
|
+
* landing nothing). The landing consumes it (the transaction's `_reruns`). */
|
|
28
|
+
export declare const REACTIVE_FRAME_READ: number;
|
|
21
29
|
/**
|
|
22
30
|
* A dependency write landed while this subscriber was mid-recompute — a
|
|
23
31
|
* nested pull committed beneath one of its reads (#3037). The heap refuses
|
|
@@ -27,6 +35,39 @@ export declare const REACTIVE_REASK: number;
|
|
|
27
35
|
* either re-read later in the pass (fresh) or trimmed with it (not a dep).
|
|
28
36
|
*/
|
|
29
37
|
export declare const REACTIVE_MISSED_WAKE: number;
|
|
38
|
+
/** A `refresh()` asked this node to re-ask its question (A19 exc. 2, A24):
|
|
39
|
+
* consumed by the next pass, which — going pending — classifies its flight
|
|
40
|
+
* quiet (`_x._reask`). */
|
|
41
|
+
export declare const REACTIVE_REASK: number;
|
|
42
|
+
/** The pass was served a node's ambient staging — written this flush, not
|
|
43
|
+
* held. If the flush parks, the pass is the frame's with it (the same sync
|
|
44
|
+
* frame as the async): a verdict read cannot break it out. Per pass. */
|
|
45
|
+
export declare const REACTIVE_STAGED_READ: number;
|
|
46
|
+
/** The pass entered a verdict window (`isPending`/`latest`). Per pass: a
|
|
47
|
+
* pass that did not keeps CONFIG_VERDICT no longer — the frame-reader
|
|
48
|
+
* posture lasts exactly as long as the probing does. */
|
|
49
|
+
export declare const REACTIVE_PROBED: number;
|
|
50
|
+
/** Lanes — the node (a lane's member) was dirtied by the lane's own
|
|
51
|
+
* re-staging (a re-guess, lane work re-derived): its next pass is the
|
|
52
|
+
* lane's from the start (`recompute`), not a stale reader's re-run by an
|
|
53
|
+
* unrelated write (#3460). Consumed by the pass. */
|
|
54
|
+
export declare const REACTIVE_LANE_DIRTY: number;
|
|
55
|
+
/** Lanes (plan sec. 28) — the pass read a lane's value as lane work (`enterLane`): a
|
|
56
|
+
* tracked derivation's read of displayed optimism, a verdict read routed
|
|
57
|
+
* into the holder's verdict lane. A pass in a lane's seat that read none of
|
|
58
|
+
* its world has left the lane (`recompute`'s tail). Per pass. */
|
|
59
|
+
export declare const REACTIVE_LANE_READ: number;
|
|
60
|
+
/** Lanes (plan sec. 28) — a render effect in the frame's seat was served the screen
|
|
61
|
+
* for a lane's node (`laneRead`: a stale reader of a lane that has not
|
|
62
|
+
* shown). Its pass computing exactly what it last applied has nothing to
|
|
63
|
+
* run — an effect has no comparator, and the guess's notification is not a
|
|
64
|
+
* change it can see. Per pass. */
|
|
65
|
+
export declare const REACTIVE_SCREEN_READ: number;
|
|
66
|
+
/** A verdict reader whose probe was answered before the flush had a
|
|
67
|
+
* transaction (verdict.ts `watchVerdict`): the seam re-runs it even if a
|
|
68
|
+
* later read of the same pass routed it into a verdict lane — that was not
|
|
69
|
+
* the probe's answer (lanes.ts). Per pass. */
|
|
70
|
+
export declare const REACTIVE_PROBE_UNANSWERED: number;
|
|
30
71
|
export declare const CONFIG_OWNED_WRITE: number;
|
|
31
72
|
export declare const CONFIG_NO_SNAPSHOT: number;
|
|
32
73
|
export declare const CONFIG_TRANSPARENT: number;
|
|
@@ -34,51 +75,65 @@ export declare const CONFIG_IN_SNAPSHOT_SCOPE: number;
|
|
|
34
75
|
export declare const CONFIG_CHILDREN_FORBIDDEN: number;
|
|
35
76
|
export declare const CONFIG_AUTO_DISPOSE: number;
|
|
36
77
|
export declare const CONFIG_SYNC: number;
|
|
37
|
-
|
|
38
|
-
|
|
78
|
+
/** The node has a pass awaiting commit: its live children (and `_disposal`)
|
|
79
|
+
* are that pass's and were never shown — a re-pass tears them down on the
|
|
80
|
+
* spot, while the frame parked on `_x._pendingFirstChild` keeps waiting for
|
|
81
|
+
* the commit. Set by `recompute` when it queues the node. */
|
|
82
|
+
export declare const CONFIG_STAGED: number;
|
|
83
|
+
/** The node's staged state is in the future: the flush that staged it
|
|
84
|
+
* parked. A write to it, a tracked read of it by a derivation, or a pass
|
|
85
|
+
* over a derivation holding it joins the future (the flush parks). Render
|
|
86
|
+
* effects are the frame, not derivations (rule 3): reading it outside a
|
|
87
|
+
* parking flush they see the committed value and hold nothing, and are
|
|
88
|
+
* re-derived at the landing. Set at the park seam on every staged node. */
|
|
89
|
+
export declare const CONFIG_HELD: number;
|
|
90
|
+
/** A15's reveal corollary (#3305): a commit published this flight's inputs
|
|
91
|
+
* beneath it — the node was pending, nothing staged, when it committed — so
|
|
92
|
+
* its committed value is torn against the visible frame. A render effect
|
|
93
|
+
* revealing it cannot be a stale reader: it observes the flight (pends,
|
|
94
|
+
* holds) instead of showing the pre-flight value. Outlives the flight that
|
|
95
|
+
* earned it for as long as the node stays pending, and no longer: the
|
|
96
|
+
* commit that lands a value clears it. */
|
|
97
|
+
export declare const CONFIG_INPUTS_PUBLISHED: number;
|
|
98
|
+
/** Lanes (plan sec. 28) — the node has a lane's value (`_x._lane`): a written guess
|
|
99
|
+
* (CONFIG_GUESS) or a lane pass's derivation of one. Its lane is
|
|
100
|
+
* `_x._transaction`. The gate to the lane arm of `read`; `_value` stays the
|
|
101
|
+
* committed truth and `_pendingValue` a transaction's staging throughout —
|
|
102
|
+
* a value's world is where it lives, never a bit. */
|
|
103
|
+
export declare const CONFIG_OVERRIDE: number;
|
|
104
|
+
/** A store slot node (`slotSignal`): a leaf, presence, container or deep
|
|
105
|
+
* witness of a store target. One literal, no `_x` at birth; the last-one-out
|
|
106
|
+
* sweep dispatches it to the store's shared release hook (graph.ts) instead
|
|
107
|
+
* of a per-node `_unobserved` closure. */
|
|
108
|
+
export declare const CONFIG_SLOT_NODE: number;
|
|
109
|
+
/** A store slot node whose staging is a USER setter's proposal, not its
|
|
110
|
+
* derive's derivation (A34 (3)'s discriminator for derived stores — the
|
|
111
|
+
* leaf twin of REACTIVE_MANUAL_WRITE). Set by the user setter, cleared by
|
|
112
|
+
* the derive's own write to the key. */
|
|
113
|
+
export declare const CONFIG_MANUAL_WRITE: number;
|
|
114
|
+
/** Lanes — the node carries a written guess (`optimisticWrite`): its own
|
|
115
|
+
* source recomputing it, or a plain write landing on it, is the truth
|
|
116
|
+
* (`supersede`). A lane's derived staging is not. */
|
|
117
|
+
export declare const CONFIG_GUESS: number;
|
|
118
|
+
/** The node's pass read a verdict (`isPending`/`latest`): a dependency going
|
|
119
|
+
* pending is a question for its next pass — the verdict changed — so the
|
|
120
|
+
* propagation re-derives it instead of marking it pending (as a kept-tail
|
|
121
|
+
* link does, A30). Set at the window, never cleared: a reader that stopped
|
|
122
|
+
* asking re-derives once and goes pending through its own read. */
|
|
123
|
+
export declare const CONFIG_VERDICT: number;
|
|
124
|
+
/** A dependency's status is a question for this node's pass, not a fact
|
|
125
|
+
* about its current one: the propagation re-derives it instead of marking
|
|
126
|
+
* it, for errors as for pending (as CONFIG_VERDICT). A boundary's output
|
|
127
|
+
* (show the content, or the fallback) and its `on` node (boundaries.ts); a
|
|
128
|
+
* promise over an expression (`resolve`/`until`, signals.ts: the pass reads
|
|
129
|
+
* the error and rejects, or re-asks a pending source). */
|
|
130
|
+
export declare const CONFIG_REDERIVE: number;
|
|
131
|
+
/** The reader wants the truth, not the lane's guess (`until`, signals.ts):
|
|
132
|
+
* a read of displayed optimism serves the base the guess covers, makes the
|
|
133
|
+
* pass no lane's, and the truth landing wakes it even when it confirms the
|
|
134
|
+
* guess (the one case ordinary subscribers are not told — A17's silence). */
|
|
135
|
+
export declare const CONFIG_AUTHORITATIVE: number;
|
|
39
136
|
export declare const CONFIG_HAS_SNAPSHOT: number;
|
|
40
|
-
export declare const CONFIG_HAS_LANE: number;
|
|
41
|
-
/** Set on a FIREWALL computed when any of its child signals creates an
|
|
42
|
-
* isPending()/latest() companion. Gates the post-recompute child-companion
|
|
43
|
-
* walk (#3038): a store computed's `_child` chain holds one node per
|
|
44
|
-
* materialized leaf, so walking it unconditionally makes every update cost
|
|
45
|
-
* O(all leaves ever read). Sticky — set at companion creation, never
|
|
46
|
-
* cleared; sync-only apps never set it and never pay the walk. */
|
|
47
|
-
export declare const CONFIG_CHILD_COMPANIONS: number;
|
|
48
|
-
/** Set on a computed when its first firewall child signal is installed
|
|
49
|
-
* (projection machinery). Gates markNode's firewall-children walk with one
|
|
50
|
-
* masked read of the always-present _config — the walk's old `_child` read
|
|
51
|
-
* moved into the cold extension (§12), and an unconditional `_x` deref per
|
|
52
|
-
* marked node measurably taxed the propagation hot path (diamond -22%). */
|
|
53
|
-
export declare const CONFIG_FW_CHILDREN: number;
|
|
54
|
-
/** Authoritative-view reader (`until()`): while this node computes, reads
|
|
55
|
-
* dodge active optimistic OVERRIDES only — the predicate must observe
|
|
56
|
-
* arriving truth, never the caller's own tentative writes (which would
|
|
57
|
-
* trivially satisfy it). Everything else reads normally, INCLUDING
|
|
58
|
-
* transition-staged `_pendingValue`: staged data is authoritative (optimism
|
|
59
|
-
* lives only in override slots), and a hold that refused staged reads would
|
|
60
|
-
* deadlock on data the open transaction itself is holding (a refresh the
|
|
61
|
-
* action issued lands staged and cannot commit until the hold releases).
|
|
62
|
-
* read() checks the bit on the reading computation (`context`) directly — no
|
|
63
|
-
* ambient flag — so a shared computed the predicate pulls recomputes as
|
|
64
|
-
* itself (no bit) under the normal view, and its cache never forks. */
|
|
65
|
-
export declare const CONFIG_AUTHORITATIVE_READ: number;
|
|
66
|
-
/** Sticky mark: an authoritative-view reader read this node PAST an active
|
|
67
|
-
* override. The ack shape — an authoritative arrival EQUAL to the override —
|
|
68
|
-
* rides paths that are deliberately silent under A17 (every ordinary reader
|
|
69
|
-
* sees the override, so an equal landing changes nothing for them). A marked
|
|
70
|
-
* node notifies those readers on such paths anyway, so the landed truth is
|
|
71
|
-
* seen without re-firing ordinary subscribers. Never cleared — only nodes an
|
|
72
|
-
* until() predicate observed mid-override pay. */
|
|
73
|
-
export declare const CONFIG_AUTHORITATIVE_OBSERVED: number;
|
|
74
|
-
/** Promise-delivery effect (resolve()/until()): commits its computed value
|
|
75
|
-
* directly even when recomputing under its own held transition. These
|
|
76
|
-
* effects deliver applies on a microtask (#2930) instead of the stashed
|
|
77
|
-
* effect queues, so the value must ride the same immediate schedule — a
|
|
78
|
-
* staged value with an immediate apply delivers stale state (resolve) or
|
|
79
|
-
* deadlocks the hold (until). Safe because the node is a private leaf: no
|
|
80
|
-
* subscriber reads an effect's value, only its own apply does. */
|
|
81
|
-
export declare const CONFIG_DIRECT_COMMIT: number;
|
|
82
137
|
/** Fresh-pull reader (awaitable `refresh()`'s waiter effect): a read of a
|
|
83
138
|
* dirty source recomputes it inline even when the height gate defers to the
|
|
84
139
|
* flush. Closes the same-flush ordering race where a waiter created
|
|
@@ -89,127 +144,33 @@ export declare const CONFIG_DIRECT_COMMIT: number;
|
|
|
89
144
|
* deliberately keeps that race — its contract is "first settled value"
|
|
90
145
|
* (#2930), not "next quiescent state". */
|
|
91
146
|
export declare const CONFIG_FRESH_READ: number;
|
|
92
|
-
/** HELD truth (#3164): this node's staged `_pendingValue` is confirming
|
|
93
|
-
* truth riding a transaction that retains optimism, revealed only at that
|
|
94
|
-
* transaction's settle. Two arming sites, one meaning: the store fold
|
|
95
|
-
* (a landing staged into the retaining transaction) and until()'s
|
|
96
|
-
* flip-entanglement (a foreign carrier's staged write, stolen when it
|
|
97
|
-
* flipped the awaited predicate truthy). Override-covered nodes never
|
|
98
|
-
* arm: the override is their display and its revert their notification
|
|
99
|
-
* (A17).
|
|
100
|
-
*
|
|
101
|
-
* To a DERIVING reader the truth is a staged value like any other: a memo
|
|
102
|
-
* or user effect served it enters the transaction and is held with it
|
|
103
|
-
* (A29), so a pass that composes it with a superseded override's truth
|
|
104
|
-
* composes ONE staged world — never staged truth beside committed
|
|
105
|
-
* neighbours (#3568: the mask served the retaining transaction's own pass
|
|
106
|
-
* the landed `length` through the override while the rows past it stayed
|
|
107
|
-
* committed, and `<For>` walked into a hole). Stale readers of a foreign
|
|
108
|
-
* transaction keep committed through the stale-of-foreign clause,
|
|
109
|
-
* untracked reads keep committed (Rule 1), and latest() and until()'s
|
|
110
|
-
* predicate tunnel through — the exemption that keeps holds deadlock-free.
|
|
111
|
-
*
|
|
112
|
-
* The one reader the mark gates is a LANE pass, owning transaction or not
|
|
113
|
-
* (ruled 2026-09-22, superseding #3589's owner exemption): a lane applies
|
|
114
|
-
* its frame display-ahead at the park, so a lane pass served the truth
|
|
115
|
-
* would paint the confirmation beside the optimism it confirms —
|
|
116
|
-
* `saving=true` beside the saved row, a frame no timeline contains
|
|
117
|
-
* (GabbeV's union tear). It keeps committed and is re-run by the reveal's
|
|
118
|
-
* post-revert wake. A lane under the retaining transaction owns its
|
|
119
|
-
* overrides and its lane cargo (`ownsLane`), not the transaction's
|
|
120
|
-
* confirming truth. Cleared at commit (the commit IS the reveal);
|
|
121
|
-
* subscribers masked during the hold are woken by finalizePureQueue's
|
|
122
|
-
* post-revert pass. */
|
|
123
|
-
export declare const CONFIG_HELD_TRUTH: number;
|
|
124
|
-
/** SLOT node (store leaf): created through `slotSignal` with `_host`/`_key`
|
|
125
|
-
* backrefs baked into the literal. The unobserved sweep dispatches these to
|
|
126
|
-
* the ONE shared hook (`setSlotUnobserved`) instead of a per-node closure
|
|
127
|
-
* held in a per-node extension — store mounts materialize one signal per
|
|
128
|
-
* touched leaf, so per-node allocations (options object, equals closure,
|
|
129
|
-
* unobserved closure, NodeExtension) were the measured create-floor bytes
|
|
130
|
-
* (warm dbmon profile: store node machinery ~36% + GC ~29%). */
|
|
131
|
-
export declare const CONFIG_SLOT_NODE: number;
|
|
132
|
-
/** Optimistic node whose own source arrived with a value DIFFERENT from its
|
|
133
|
-
* active override (A18 supersession, #3331). The override survives only as
|
|
134
|
-
* the displayed value — untracked reads and the applied frame keep it until
|
|
135
|
-
* the owning transaction commits — while the graph has already moved to the
|
|
136
|
-
* staged truth in `_pendingValue`: tracked readers see it and the corrected
|
|
137
|
-
* cascade is that transaction's held work. Set by the two own-source write
|
|
138
|
-
* paths (asyncWrite, transition-held recompute); cleared by a fresh optimistic
|
|
139
|
-
* write (a new override re-masks) and by the revert. */
|
|
140
|
-
export declare const CONFIG_OVERRIDE_SUPERSEDED: number;
|
|
141
|
-
/** HELD children (#3404): this node's `_firstChild` chain (and `_disposal`
|
|
142
|
-
* list) was built by a recompute whose result has not committed — a staged
|
|
143
|
-
* value, a pending window, or a run under a held transaction. A later
|
|
144
|
-
* recompute may tear those children down immediately: nothing observable
|
|
145
|
-
* was ever built on them. Unset, the children belong to the committed frame
|
|
146
|
-
* and a recompute defers them as zombies (`_pendingFirstChild`) until this
|
|
147
|
-
* node commits — regardless of whether the recompute runs under a
|
|
148
|
-
* transaction. A parked node (status propagation stamps `_transition`
|
|
149
|
-
* without recomputing) recomputed when its source lands otherwise disposed
|
|
150
|
-
* its committed children mid-hold, running their cleanups before the
|
|
151
|
-
* transaction's atomic reveal. Cleared by `commitPendingNode`. Transaction
|
|
152
|
-
* work only (A15 lane work and transaction work, #3698): zombies are parked
|
|
153
|
-
* by a pass under a held transaction; a pass over a lane parks a LANE frame
|
|
154
|
-
* instead (`CONFIG_LANE_FRAME`), whatever the node's kind. */
|
|
155
|
-
export declare const CONFIG_HELD_CHILDREN: number;
|
|
156
|
-
/** The frame parked in `_pendingFirstChild` / `_pendingDisposal` is a LANE
|
|
157
|
-
* frame (#3662, #3698; A15 lane work and transaction work): a lane pass —
|
|
158
|
-
* on an effect or a memo alike — publishes into the lane's frame (an
|
|
159
|
-
* effect's run; a memo's derived override, A17), so the frame it replaces
|
|
160
|
-
* leaves the screen when the lane applies (A30) — not at the action's
|
|
161
|
-
* commit like #3404's transaction zombies, and not at the pass (a held lane
|
|
162
|
-
* defers the apply with the frame still displayed). Drained by the lane's
|
|
163
|
-
* render entry the parking site pushed ahead of the new frame's effects
|
|
164
|
-
* (cleanups before side effects), by `commitPendingNode` if a hold commits
|
|
165
|
-
* the node first, or with the owner's death. While set the parked frame is
|
|
166
|
-
* not a hold (the node is not queued or stamped for it — lane work never
|
|
167
|
-
* makes its node transaction work), a superseding pass disposes the
|
|
168
|
-
* never-shown live children on the spot, and a lane-channel dirty on a
|
|
169
|
-
* member is cancelled (`laneZombie`). Ruled 2026-09-28 (#3698): a pass is
|
|
170
|
-
* lane work or transaction work by its owner, never by node kind. #3662
|
|
171
|
-
* flagged effects only, and a memo's lane pass parked a transaction zombie
|
|
172
|
-
* that queued and stamped the memo as the action's pending node, so its
|
|
173
|
-
* next mainline recompute re-entered the hold. */
|
|
174
|
-
export declare const CONFIG_LANE_FRAME: number;
|
|
175
|
-
/** In-flight async node whose inputs were PUBLISHED while it was pending: a
|
|
176
|
-
* batch or transaction committed with the node still `STATUS_PENDING` (an
|
|
177
|
-
* unobserved flight, #3305), so the inputs are on screen and the node's
|
|
178
|
-
* committed `_value` is stale against them. Governs read()'s reveal
|
|
179
|
-
* carve-out: a stale (render) reader in some OTHER transaction may show a
|
|
180
|
-
* foreign-held pending node's committed value — parallel transactions, no
|
|
181
|
-
* entanglement — only while that value is coherent with the visible frame,
|
|
182
|
-
* i.e. while the flight's inputs are themselves held (unpublished) and not
|
|
183
|
-
* lane-revealed. Set by `commitPendingNodes`; cleared when the node next
|
|
184
|
-
* enters pending fresh (a new flight from a settled state). */
|
|
185
|
-
export declare const CONFIG_INPUTS_PUBLISHED: number;
|
|
186
147
|
/** A28 (4): the node was written inside a recompute that ran OUTSIDE a flush
|
|
187
148
|
* (a creation-time compute — boundary machinery, a mapArray's first run). Such
|
|
188
149
|
* a write is promoted at that recompute's end: readers in the same block see
|
|
189
150
|
* it. Cleared when the next flush begins; set only on that rare path. */
|
|
190
151
|
export declare const CONFIG_PROMOTED: number;
|
|
191
|
-
/** A28 for same-tick adoption: the node was staged outside a flush and then
|
|
192
|
-
* adopted by a transaction (initTransition) before any flush carried the
|
|
193
|
-
* staging — the stamp says "held", but nothing flushed is staged for it, so
|
|
194
|
-
* on no channel is the write visible yet: `latest()` answers the committed
|
|
195
|
-
* value, the verdict sees nothing pending (as the store's leaves already did
|
|
196
|
-
* through their own selection). Cleared when the carrying flush re-stamps the
|
|
197
|
-
* transaction's pending nodes (reassignPendingTransition). */
|
|
198
|
-
export declare const CONFIG_ADOPTED_UNFLUSHED: number;
|
|
199
|
-
/** The node's active override is a DERIVED one: a lane pass published its
|
|
200
|
-
* speculative result into the override slot instead of `_value` (lanes
|
|
201
|
-
* stage — an optimistic derivation is an override, #3479). Its truth is not
|
|
202
|
-
* `_value` but a recompute from its inputs' truth, so the body-end
|
|
203
|
-
* supersession (`endOptimism`) and the authoritative-flight blockage
|
|
204
|
-
* (`transitionBlocked`) skip it; the revert drops the override and re-derives
|
|
205
|
-
* it (`resolveOptimisticNodes`). Cleared with the override. */
|
|
206
|
-
export declare const CONFIG_DERIVED_OVERRIDE: number;
|
|
207
152
|
/** Observe tiers only: the node is framework plumbing (the `solid-js/refresh`
|
|
208
153
|
* HMR memo between a component's root and its body) — it has no name, is no
|
|
209
154
|
* segment of any owner path, and the attribution engine records nothing about
|
|
210
|
-
* it (creation, re-runs, checks)
|
|
155
|
+
* it (creation, re-runs, checks) and does not count it toward another scope's
|
|
156
|
+
* WIDE_SCOPE_DEPS or a write's engine-side HUGE_FAN_OUT, while the nodes it
|
|
157
|
+
* owns stay fully observed.
|
|
211
158
|
* Set from the internal `_plumbing` option at creation; never set in prod. */
|
|
212
159
|
export declare const CONFIG_PLUMBING: number;
|
|
160
|
+
/** Observe tiers only: a framework scope wide by construction (`@solidjs/web`'s
|
|
161
|
+
* insert child-resolution pass, which must track each row's resolved child) —
|
|
162
|
+
* the attribution engine's WIDE_SCOPE_DEPS skips it; the always-on HUGE_FAN_IN
|
|
163
|
+
* does not. Set from the internal `_wide` option at creation by dev builds only
|
|
164
|
+
* (the observe artifact mangles the option name, as it does `_plumbing`). */
|
|
165
|
+
export declare const CONFIG_WIDE: number;
|
|
166
|
+
/** Observe tiers only: a framework async node that supersedes its own flights
|
|
167
|
+
* by design (`@solidjs/web/frames`' per-key slot-arg memo, re-run by every
|
|
168
|
+
* re-shipped record while the arg is still pending) — the attribution
|
|
169
|
+
* engine's ABANDONED_FLIGHTS skips it; its flight records and the feedback
|
|
170
|
+
* fold's counts are unchanged. Set from the internal `_supersedes` option at
|
|
171
|
+
* creation by dev builds only (the observe artifact mangles the option name,
|
|
172
|
+
* as it does `_wide`). */
|
|
173
|
+
export declare const CONFIG_SUPERSEDES: number;
|
|
213
174
|
export declare const STATUS_NONE = 0;
|
|
214
175
|
export declare const STATUS_PENDING: number;
|
|
215
176
|
export declare const STATUS_ERROR: number;
|
|
@@ -218,24 +179,8 @@ export declare const EFFECT_PURE = 0;
|
|
|
218
179
|
export declare const EFFECT_RENDER = 1;
|
|
219
180
|
export declare const EFFECT_USER = 2;
|
|
220
181
|
export declare const EFFECT_TRACKED = 3;
|
|
221
|
-
/** OR-ed into the `type` a lane passes to its effect runners: lane runs
|
|
222
|
-
* apply ahead of their transaction and are exempt from ownership parking. */
|
|
223
|
-
export declare const LANE_RUN = 4;
|
|
224
182
|
export declare const NOT_PENDING: {};
|
|
225
183
|
export declare const NO_SNAPSHOT: {};
|
|
226
|
-
/**
|
|
227
|
-
* Stand-in stored in `_overrideValue` for an optimistic write of literal
|
|
228
|
-
* `undefined` (#2898). The slot doubles as the optimistic-node brand
|
|
229
|
-
* (`undefined` = not optimistic, `NOT_PENDING` = at rest), so the raw value
|
|
230
|
-
* would erase the node's optimistic identity: the write turns invisible and
|
|
231
|
-
* follow-up writes route off the optimistic path and commit permanently.
|
|
232
|
-
* Same shape as NO_SNAPSHOT. Sites that surface the override VALUE unwrap
|
|
233
|
-
* via `visibleOverrideValue`; slot identity tests stay raw.
|
|
234
|
-
*/
|
|
235
|
-
export declare const OVERRIDE_UNDEFINED: {};
|
|
236
|
-
/** Unwrap an active override's stored value for surfacing to readers (#2898). */
|
|
237
|
-
export declare function unwrapOverride<T = any>(v: unknown): T;
|
|
238
|
-
export declare const STORE_SNAPSHOT_PROPS = "sp";
|
|
239
184
|
export declare const SUPPORTS_PROXY: boolean;
|
|
240
185
|
export declare const defaultContext: {};
|
|
241
186
|
/**
|