solid-js 1.3.0-rc.3 → 1.3.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/dist/dev.cjs +37 -25
- package/dist/dev.js +37 -26
- package/dist/server.cjs +7 -1
- package/dist/server.js +7 -2
- package/dist/solid.cjs +37 -25
- package/dist/solid.js +37 -26
- package/package.json +5 -5
- package/store/dist/dev.cjs +3 -5
- package/store/dist/dev.js +3 -5
- package/store/dist/store.cjs +2 -4
- package/store/dist/store.js +2 -4
- package/store/types/index.d.ts +1 -1
- package/store/types/modifiers.d.ts +3 -3
- package/store/types/mutable.d.ts +3 -3
- package/store/types/server.d.ts +3 -38
- package/store/types/store.d.ts +27 -55
- package/types/index.d.ts +1 -1
- package/types/jsx.d.ts +1 -0
- package/types/reactive/signal.d.ts +17 -3
- package/types/server/index.d.ts +1 -1
- package/types/server/reactive.d.ts +1 -0
- package/web/dist/dev.cjs +5 -4
- package/web/dist/dev.js +5 -4
- package/web/dist/server.cjs +4 -4
- package/web/dist/server.js +4 -4
- package/web/dist/web.cjs +5 -4
- package/web/dist/web.js +5 -4
- package/web/types/client.d.ts +1 -1
package/dist/dev.cjs
CHANGED
|
@@ -131,7 +131,7 @@ function nextHydrateContext() {
|
|
|
131
131
|
|
|
132
132
|
const equalFn = (a, b) => a === b;
|
|
133
133
|
const $PROXY = Symbol("solid-proxy");
|
|
134
|
-
const $DEVCOMP = Symbol(
|
|
134
|
+
const $DEVCOMP = Symbol("solid-dev-component");
|
|
135
135
|
const signalOptions = {
|
|
136
136
|
equals: equalFn
|
|
137
137
|
};
|
|
@@ -170,14 +170,12 @@ function createRoot(fn, detachedOwner) {
|
|
|
170
170
|
if (owner) root.name = `${owner.name}-r${rootCount++}`;
|
|
171
171
|
Owner = root;
|
|
172
172
|
Listener = null;
|
|
173
|
-
let result;
|
|
174
173
|
try {
|
|
175
|
-
runUpdates(() =>
|
|
174
|
+
return runUpdates(() => fn(() => cleanNode(root)), true);
|
|
176
175
|
} finally {
|
|
177
176
|
Listener = listener;
|
|
178
177
|
Owner = owner;
|
|
179
178
|
}
|
|
180
|
-
return result;
|
|
181
179
|
}
|
|
182
180
|
function createSignal(value, options) {
|
|
183
181
|
options = options ? Object.assign({}, signalOptions, options) : signalOptions;
|
|
@@ -211,7 +209,21 @@ function createEffect(fn, value, options) {
|
|
|
211
209
|
s = SuspenseContext && lookup(Owner, SuspenseContext.id);
|
|
212
210
|
if (s) c.suspense = s;
|
|
213
211
|
c.user = true;
|
|
214
|
-
Effects
|
|
212
|
+
Effects ? Effects.push(c) : queueMicrotask(() => updateComputation(c));
|
|
213
|
+
}
|
|
214
|
+
function createReaction(onInvalidate, options) {
|
|
215
|
+
let fn;
|
|
216
|
+
const c = createComputation(() => {
|
|
217
|
+
fn ? fn() : untrack(onInvalidate);
|
|
218
|
+
fn = undefined;
|
|
219
|
+
}, undefined, false, 0, options ),
|
|
220
|
+
s = SuspenseContext && lookup(Owner, SuspenseContext.id);
|
|
221
|
+
if (s) c.suspense = s;
|
|
222
|
+
c.user = true;
|
|
223
|
+
return tracking => {
|
|
224
|
+
fn = tracking;
|
|
225
|
+
updateComputation(c);
|
|
226
|
+
};
|
|
215
227
|
}
|
|
216
228
|
function createMemo(fn, value, options) {
|
|
217
229
|
options = options ? Object.assign({}, signalOptions, options) : signalOptions;
|
|
@@ -237,11 +249,11 @@ function createResource(source, fetcher, options) {
|
|
|
237
249
|
fetcher = source;
|
|
238
250
|
source = true;
|
|
239
251
|
}
|
|
240
|
-
options
|
|
252
|
+
options || (options = {});
|
|
241
253
|
if (options.globalRefetch !== false) {
|
|
242
254
|
Resources || (Resources = new Set());
|
|
243
255
|
Resources.add(load);
|
|
244
|
-
onCleanup(() => Resources.delete(load));
|
|
256
|
+
Owner && onCleanup(() => Resources.delete(load));
|
|
245
257
|
}
|
|
246
258
|
const contexts = new Set(),
|
|
247
259
|
[s, set] = createSignal(options.initialValue),
|
|
@@ -352,7 +364,7 @@ function createResource(source, fetcher, options) {
|
|
|
352
364
|
}
|
|
353
365
|
let Resources;
|
|
354
366
|
function refetchResources(info) {
|
|
355
|
-
Resources && Resources.
|
|
367
|
+
return Resources && Promise.all([...Resources].map(fn => fn(info)));
|
|
356
368
|
}
|
|
357
369
|
function createDeferred(source, options) {
|
|
358
370
|
let t,
|
|
@@ -494,7 +506,7 @@ function startTransition(fn) {
|
|
|
494
506
|
queue: new Set(),
|
|
495
507
|
running: true
|
|
496
508
|
});
|
|
497
|
-
t.done
|
|
509
|
+
t.done || (t.done = new Promise(res => t.resolve = res));
|
|
498
510
|
t.running = true;
|
|
499
511
|
}
|
|
500
512
|
batch(fn);
|
|
@@ -777,7 +789,7 @@ function runUpdates(fn, init) {
|
|
|
777
789
|
if (Effects) wait = true;else Effects = [];
|
|
778
790
|
ExecCount++;
|
|
779
791
|
try {
|
|
780
|
-
fn();
|
|
792
|
+
return fn();
|
|
781
793
|
} catch (err) {
|
|
782
794
|
handleError(err);
|
|
783
795
|
} finally {
|
|
@@ -937,7 +949,7 @@ function handleError(err) {
|
|
|
937
949
|
fns.forEach(f => f(err));
|
|
938
950
|
}
|
|
939
951
|
function lookup(owner, key) {
|
|
940
|
-
return owner && (owner.context && owner.context[key]
|
|
952
|
+
return owner && (owner.context && owner.context[key] !== undefined ? owner.context[key] : owner.owner && lookup(owner.owner, key));
|
|
941
953
|
}
|
|
942
954
|
function resolveChildren(children) {
|
|
943
955
|
if (typeof children === "function" && !children.length) return resolveChildren(children());
|
|
@@ -1496,20 +1508,19 @@ function Suspense(props) {
|
|
|
1496
1508
|
const key = sharedConfig.context.id + sharedConfig.context.count;
|
|
1497
1509
|
p = sharedConfig.load(key);
|
|
1498
1510
|
if (p) {
|
|
1499
|
-
if (typeof p !== "object" || !("then" in p))
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
}
|
|
1511
|
+
if (typeof p !== "object" || !("then" in p)) p = Promise.resolve(p);
|
|
1512
|
+
const [s, set] = createSignal(undefined, {
|
|
1513
|
+
equals: false
|
|
1514
|
+
});
|
|
1515
|
+
flicker = s;
|
|
1516
|
+
p.then(err => {
|
|
1517
|
+
if (error = err) return set();
|
|
1518
|
+
sharedConfig.gather(key);
|
|
1519
|
+
setHydrateContext(ctx);
|
|
1520
|
+
set();
|
|
1521
|
+
setHydrateContext();
|
|
1522
|
+
p = undefined;
|
|
1523
|
+
});
|
|
1513
1524
|
}
|
|
1514
1525
|
}
|
|
1515
1526
|
const listContext = useContext(SuspenseListContext);
|
|
@@ -1588,6 +1599,7 @@ exports.createContext = createContext;
|
|
|
1588
1599
|
exports.createDeferred = createDeferred;
|
|
1589
1600
|
exports.createEffect = createEffect;
|
|
1590
1601
|
exports.createMemo = createMemo;
|
|
1602
|
+
exports.createReaction = createReaction;
|
|
1591
1603
|
exports.createRenderEffect = createRenderEffect;
|
|
1592
1604
|
exports.createResource = createResource;
|
|
1593
1605
|
exports.createRoot = createRoot;
|
package/dist/dev.js
CHANGED
|
@@ -127,7 +127,7 @@ function nextHydrateContext() {
|
|
|
127
127
|
|
|
128
128
|
const equalFn = (a, b) => a === b;
|
|
129
129
|
const $PROXY = Symbol("solid-proxy");
|
|
130
|
-
const $DEVCOMP = Symbol(
|
|
130
|
+
const $DEVCOMP = Symbol("solid-dev-component");
|
|
131
131
|
const signalOptions = {
|
|
132
132
|
equals: equalFn
|
|
133
133
|
};
|
|
@@ -166,14 +166,12 @@ function createRoot(fn, detachedOwner) {
|
|
|
166
166
|
if (owner) root.name = `${owner.name}-r${rootCount++}`;
|
|
167
167
|
Owner = root;
|
|
168
168
|
Listener = null;
|
|
169
|
-
let result;
|
|
170
169
|
try {
|
|
171
|
-
runUpdates(() =>
|
|
170
|
+
return runUpdates(() => fn(() => cleanNode(root)), true);
|
|
172
171
|
} finally {
|
|
173
172
|
Listener = listener;
|
|
174
173
|
Owner = owner;
|
|
175
174
|
}
|
|
176
|
-
return result;
|
|
177
175
|
}
|
|
178
176
|
function createSignal(value, options) {
|
|
179
177
|
options = options ? Object.assign({}, signalOptions, options) : signalOptions;
|
|
@@ -207,7 +205,21 @@ function createEffect(fn, value, options) {
|
|
|
207
205
|
s = SuspenseContext && lookup(Owner, SuspenseContext.id);
|
|
208
206
|
if (s) c.suspense = s;
|
|
209
207
|
c.user = true;
|
|
210
|
-
Effects
|
|
208
|
+
Effects ? Effects.push(c) : queueMicrotask(() => updateComputation(c));
|
|
209
|
+
}
|
|
210
|
+
function createReaction(onInvalidate, options) {
|
|
211
|
+
let fn;
|
|
212
|
+
const c = createComputation(() => {
|
|
213
|
+
fn ? fn() : untrack(onInvalidate);
|
|
214
|
+
fn = undefined;
|
|
215
|
+
}, undefined, false, 0, options ),
|
|
216
|
+
s = SuspenseContext && lookup(Owner, SuspenseContext.id);
|
|
217
|
+
if (s) c.suspense = s;
|
|
218
|
+
c.user = true;
|
|
219
|
+
return tracking => {
|
|
220
|
+
fn = tracking;
|
|
221
|
+
updateComputation(c);
|
|
222
|
+
};
|
|
211
223
|
}
|
|
212
224
|
function createMemo(fn, value, options) {
|
|
213
225
|
options = options ? Object.assign({}, signalOptions, options) : signalOptions;
|
|
@@ -233,11 +245,11 @@ function createResource(source, fetcher, options) {
|
|
|
233
245
|
fetcher = source;
|
|
234
246
|
source = true;
|
|
235
247
|
}
|
|
236
|
-
options
|
|
248
|
+
options || (options = {});
|
|
237
249
|
if (options.globalRefetch !== false) {
|
|
238
250
|
Resources || (Resources = new Set());
|
|
239
251
|
Resources.add(load);
|
|
240
|
-
onCleanup(() => Resources.delete(load));
|
|
252
|
+
Owner && onCleanup(() => Resources.delete(load));
|
|
241
253
|
}
|
|
242
254
|
const contexts = new Set(),
|
|
243
255
|
[s, set] = createSignal(options.initialValue),
|
|
@@ -348,7 +360,7 @@ function createResource(source, fetcher, options) {
|
|
|
348
360
|
}
|
|
349
361
|
let Resources;
|
|
350
362
|
function refetchResources(info) {
|
|
351
|
-
Resources && Resources.
|
|
363
|
+
return Resources && Promise.all([...Resources].map(fn => fn(info)));
|
|
352
364
|
}
|
|
353
365
|
function createDeferred(source, options) {
|
|
354
366
|
let t,
|
|
@@ -490,7 +502,7 @@ function startTransition(fn) {
|
|
|
490
502
|
queue: new Set(),
|
|
491
503
|
running: true
|
|
492
504
|
});
|
|
493
|
-
t.done
|
|
505
|
+
t.done || (t.done = new Promise(res => t.resolve = res));
|
|
494
506
|
t.running = true;
|
|
495
507
|
}
|
|
496
508
|
batch(fn);
|
|
@@ -773,7 +785,7 @@ function runUpdates(fn, init) {
|
|
|
773
785
|
if (Effects) wait = true;else Effects = [];
|
|
774
786
|
ExecCount++;
|
|
775
787
|
try {
|
|
776
|
-
fn();
|
|
788
|
+
return fn();
|
|
777
789
|
} catch (err) {
|
|
778
790
|
handleError(err);
|
|
779
791
|
} finally {
|
|
@@ -933,7 +945,7 @@ function handleError(err) {
|
|
|
933
945
|
fns.forEach(f => f(err));
|
|
934
946
|
}
|
|
935
947
|
function lookup(owner, key) {
|
|
936
|
-
return owner && (owner.context && owner.context[key]
|
|
948
|
+
return owner && (owner.context && owner.context[key] !== undefined ? owner.context[key] : owner.owner && lookup(owner.owner, key));
|
|
937
949
|
}
|
|
938
950
|
function resolveChildren(children) {
|
|
939
951
|
if (typeof children === "function" && !children.length) return resolveChildren(children());
|
|
@@ -1492,20 +1504,19 @@ function Suspense(props) {
|
|
|
1492
1504
|
const key = sharedConfig.context.id + sharedConfig.context.count;
|
|
1493
1505
|
p = sharedConfig.load(key);
|
|
1494
1506
|
if (p) {
|
|
1495
|
-
if (typeof p !== "object" || !("then" in p))
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
}
|
|
1507
|
+
if (typeof p !== "object" || !("then" in p)) p = Promise.resolve(p);
|
|
1508
|
+
const [s, set] = createSignal(undefined, {
|
|
1509
|
+
equals: false
|
|
1510
|
+
});
|
|
1511
|
+
flicker = s;
|
|
1512
|
+
p.then(err => {
|
|
1513
|
+
if (error = err) return set();
|
|
1514
|
+
sharedConfig.gather(key);
|
|
1515
|
+
setHydrateContext(ctx);
|
|
1516
|
+
set();
|
|
1517
|
+
setHydrateContext();
|
|
1518
|
+
p = undefined;
|
|
1519
|
+
});
|
|
1509
1520
|
}
|
|
1510
1521
|
}
|
|
1511
1522
|
const listContext = useContext(SuspenseListContext);
|
|
@@ -1565,4 +1576,4 @@ if (globalThis) {
|
|
|
1565
1576
|
if (!globalThis.Solid$$) globalThis.Solid$$ = true;else console.warn("You appear to have multiple instances of Solid. This can lead to unexpected behavior.");
|
|
1566
1577
|
}
|
|
1567
1578
|
|
|
1568
|
-
export { $DEVCOMP, $PROXY, DEV, ErrorBoundary, For, Index, Match, Show, Suspense, SuspenseList, Switch, batch, cancelCallback, children, createComponent, createComputed, createContext, createDeferred, createEffect, createMemo, createRenderEffect, createResource, createRoot, createSelector, createSignal, createUniqueId, enableExternalSource, enableHydration, enableScheduling, equalFn, from, getListener, getOwner, indexArray, lazy, mapArray, mergeProps, observable, on, onCleanup, onError, onMount, refetchResources, requestCallback, runWithOwner, sharedConfig, splitProps, startTransition, untrack, useContext, useTransition };
|
|
1579
|
+
export { $DEVCOMP, $PROXY, DEV, ErrorBoundary, For, Index, Match, Show, Suspense, SuspenseList, Switch, batch, cancelCallback, children, createComponent, createComputed, createContext, createDeferred, createEffect, createMemo, createReaction, createRenderEffect, createResource, createRoot, createSelector, createSignal, createUniqueId, enableExternalSource, enableHydration, enableScheduling, equalFn, from, getListener, getOwner, indexArray, lazy, mapArray, mergeProps, observable, on, onCleanup, onError, onMount, refetchResources, requestCallback, runWithOwner, sharedConfig, splitProps, startTransition, untrack, useContext, useTransition };
|
package/dist/server.cjs
CHANGED
|
@@ -54,6 +54,11 @@ function createComputed(fn, value) {
|
|
|
54
54
|
}
|
|
55
55
|
const createRenderEffect = createComputed;
|
|
56
56
|
function createEffect(fn, value) {}
|
|
57
|
+
function createReaction(fn) {
|
|
58
|
+
return fn => {
|
|
59
|
+
fn();
|
|
60
|
+
};
|
|
61
|
+
}
|
|
57
62
|
function createMemo(fn, value) {
|
|
58
63
|
Owner = {
|
|
59
64
|
owner: Owner,
|
|
@@ -131,7 +136,7 @@ function runWithOwner(o, fn) {
|
|
|
131
136
|
}
|
|
132
137
|
}
|
|
133
138
|
function lookup(owner, key) {
|
|
134
|
-
return owner && (owner.context && owner.context[key]
|
|
139
|
+
return owner && (owner.context && owner.context[key] !== undefined ? owner.context[key] : owner.owner && lookup(owner.owner, key));
|
|
135
140
|
}
|
|
136
141
|
function resolveChildren(children) {
|
|
137
142
|
if (typeof children === "function" && !children.length) return resolveChildren(children());
|
|
@@ -529,6 +534,7 @@ exports.createContext = createContext;
|
|
|
529
534
|
exports.createDeferred = createDeferred;
|
|
530
535
|
exports.createEffect = createEffect;
|
|
531
536
|
exports.createMemo = createMemo;
|
|
537
|
+
exports.createReaction = createReaction;
|
|
532
538
|
exports.createRenderEffect = createRenderEffect;
|
|
533
539
|
exports.createResource = createResource;
|
|
534
540
|
exports.createRoot = createRoot;
|
package/dist/server.js
CHANGED
|
@@ -50,6 +50,11 @@ function createComputed(fn, value) {
|
|
|
50
50
|
}
|
|
51
51
|
const createRenderEffect = createComputed;
|
|
52
52
|
function createEffect(fn, value) {}
|
|
53
|
+
function createReaction(fn) {
|
|
54
|
+
return fn => {
|
|
55
|
+
fn();
|
|
56
|
+
};
|
|
57
|
+
}
|
|
53
58
|
function createMemo(fn, value) {
|
|
54
59
|
Owner = {
|
|
55
60
|
owner: Owner,
|
|
@@ -127,7 +132,7 @@ function runWithOwner(o, fn) {
|
|
|
127
132
|
}
|
|
128
133
|
}
|
|
129
134
|
function lookup(owner, key) {
|
|
130
|
-
return owner && (owner.context && owner.context[key]
|
|
135
|
+
return owner && (owner.context && owner.context[key] !== undefined ? owner.context[key] : owner.owner && lookup(owner.owner, key));
|
|
131
136
|
}
|
|
132
137
|
function resolveChildren(children) {
|
|
133
138
|
if (typeof children === "function" && !children.length) return resolveChildren(children());
|
|
@@ -506,4 +511,4 @@ function Suspense(props) {
|
|
|
506
511
|
return props.fallback;
|
|
507
512
|
}
|
|
508
513
|
|
|
509
|
-
export { $DEVCOMP, $PROXY, DEV, ErrorBoundary, For, Index, Match, Show, Suspense, SuspenseList, Switch, batch, children, createComponent, createComputed, createContext, createDeferred, createEffect, createMemo, createRenderEffect, createResource, createRoot, createSelector, createSignal, createUniqueId, enableExternalSource, enableHydration, enableScheduling, equalFn, from, getListener, getOwner, lazy, mapArray, mergeProps, observable, on, onCleanup, onError, onMount, requestCallback, runWithOwner, sharedConfig, splitProps, startTransition, untrack, useContext, useTransition };
|
|
514
|
+
export { $DEVCOMP, $PROXY, DEV, ErrorBoundary, For, Index, Match, Show, Suspense, SuspenseList, Switch, batch, children, createComponent, createComputed, createContext, createDeferred, createEffect, createMemo, createReaction, createRenderEffect, createResource, createRoot, createSelector, createSignal, createUniqueId, enableExternalSource, enableHydration, enableScheduling, equalFn, from, getListener, getOwner, lazy, mapArray, mergeProps, observable, on, onCleanup, onError, onMount, requestCallback, runWithOwner, sharedConfig, splitProps, startTransition, untrack, useContext, useTransition };
|
package/dist/solid.cjs
CHANGED
|
@@ -131,7 +131,7 @@ function nextHydrateContext() {
|
|
|
131
131
|
|
|
132
132
|
const equalFn = (a, b) => a === b;
|
|
133
133
|
const $PROXY = Symbol("solid-proxy");
|
|
134
|
-
const $DEVCOMP = Symbol(
|
|
134
|
+
const $DEVCOMP = Symbol("solid-dev-component");
|
|
135
135
|
const signalOptions = {
|
|
136
136
|
equals: equalFn
|
|
137
137
|
};
|
|
@@ -168,14 +168,12 @@ function createRoot(fn, detachedOwner) {
|
|
|
168
168
|
};
|
|
169
169
|
Owner = root;
|
|
170
170
|
Listener = null;
|
|
171
|
-
let result;
|
|
172
171
|
try {
|
|
173
|
-
runUpdates(() =>
|
|
172
|
+
return runUpdates(() => fn(() => cleanNode(root)), true);
|
|
174
173
|
} finally {
|
|
175
174
|
Listener = listener;
|
|
176
175
|
Owner = owner;
|
|
177
176
|
}
|
|
178
|
-
return result;
|
|
179
177
|
}
|
|
180
178
|
function createSignal(value, options) {
|
|
181
179
|
options = options ? Object.assign({}, signalOptions, options) : signalOptions;
|
|
@@ -208,7 +206,21 @@ function createEffect(fn, value, options) {
|
|
|
208
206
|
s = SuspenseContext && lookup(Owner, SuspenseContext.id);
|
|
209
207
|
if (s) c.suspense = s;
|
|
210
208
|
c.user = true;
|
|
211
|
-
Effects
|
|
209
|
+
Effects ? Effects.push(c) : queueMicrotask(() => updateComputation(c));
|
|
210
|
+
}
|
|
211
|
+
function createReaction(onInvalidate, options) {
|
|
212
|
+
let fn;
|
|
213
|
+
const c = createComputation(() => {
|
|
214
|
+
fn ? fn() : untrack(onInvalidate);
|
|
215
|
+
fn = undefined;
|
|
216
|
+
}, undefined, false, 0),
|
|
217
|
+
s = SuspenseContext && lookup(Owner, SuspenseContext.id);
|
|
218
|
+
if (s) c.suspense = s;
|
|
219
|
+
c.user = true;
|
|
220
|
+
return tracking => {
|
|
221
|
+
fn = tracking;
|
|
222
|
+
updateComputation(c);
|
|
223
|
+
};
|
|
212
224
|
}
|
|
213
225
|
function createMemo(fn, value, options) {
|
|
214
226
|
options = options ? Object.assign({}, signalOptions, options) : signalOptions;
|
|
@@ -234,11 +246,11 @@ function createResource(source, fetcher, options) {
|
|
|
234
246
|
fetcher = source;
|
|
235
247
|
source = true;
|
|
236
248
|
}
|
|
237
|
-
options
|
|
249
|
+
options || (options = {});
|
|
238
250
|
if (options.globalRefetch !== false) {
|
|
239
251
|
Resources || (Resources = new Set());
|
|
240
252
|
Resources.add(load);
|
|
241
|
-
onCleanup(() => Resources.delete(load));
|
|
253
|
+
Owner && onCleanup(() => Resources.delete(load));
|
|
242
254
|
}
|
|
243
255
|
const contexts = new Set(),
|
|
244
256
|
[s, set] = createSignal(options.initialValue),
|
|
@@ -349,7 +361,7 @@ function createResource(source, fetcher, options) {
|
|
|
349
361
|
}
|
|
350
362
|
let Resources;
|
|
351
363
|
function refetchResources(info) {
|
|
352
|
-
Resources && Resources.
|
|
364
|
+
return Resources && Promise.all([...Resources].map(fn => fn(info)));
|
|
353
365
|
}
|
|
354
366
|
function createDeferred(source, options) {
|
|
355
367
|
let t,
|
|
@@ -491,7 +503,7 @@ function startTransition(fn) {
|
|
|
491
503
|
queue: new Set(),
|
|
492
504
|
running: true
|
|
493
505
|
});
|
|
494
|
-
t.done
|
|
506
|
+
t.done || (t.done = new Promise(res => t.resolve = res));
|
|
495
507
|
t.running = true;
|
|
496
508
|
}
|
|
497
509
|
batch(fn);
|
|
@@ -720,7 +732,7 @@ function runUpdates(fn, init) {
|
|
|
720
732
|
if (Effects) wait = true;else Effects = [];
|
|
721
733
|
ExecCount++;
|
|
722
734
|
try {
|
|
723
|
-
fn();
|
|
735
|
+
return fn();
|
|
724
736
|
} catch (err) {
|
|
725
737
|
handleError(err);
|
|
726
738
|
} finally {
|
|
@@ -879,7 +891,7 @@ function handleError(err) {
|
|
|
879
891
|
fns.forEach(f => f(err));
|
|
880
892
|
}
|
|
881
893
|
function lookup(owner, key) {
|
|
882
|
-
return owner && (owner.context && owner.context[key]
|
|
894
|
+
return owner && (owner.context && owner.context[key] !== undefined ? owner.context[key] : owner.owner && lookup(owner.owner, key));
|
|
883
895
|
}
|
|
884
896
|
function resolveChildren(children) {
|
|
885
897
|
if (typeof children === "function" && !children.length) return resolveChildren(children());
|
|
@@ -1415,20 +1427,19 @@ function Suspense(props) {
|
|
|
1415
1427
|
const key = sharedConfig.context.id + sharedConfig.context.count;
|
|
1416
1428
|
p = sharedConfig.load(key);
|
|
1417
1429
|
if (p) {
|
|
1418
|
-
if (typeof p !== "object" || !("then" in p))
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
}
|
|
1430
|
+
if (typeof p !== "object" || !("then" in p)) p = Promise.resolve(p);
|
|
1431
|
+
const [s, set] = createSignal(undefined, {
|
|
1432
|
+
equals: false
|
|
1433
|
+
});
|
|
1434
|
+
flicker = s;
|
|
1435
|
+
p.then(err => {
|
|
1436
|
+
if (error = err) return set();
|
|
1437
|
+
sharedConfig.gather(key);
|
|
1438
|
+
setHydrateContext(ctx);
|
|
1439
|
+
set();
|
|
1440
|
+
setHydrateContext();
|
|
1441
|
+
p = undefined;
|
|
1442
|
+
});
|
|
1432
1443
|
}
|
|
1433
1444
|
}
|
|
1434
1445
|
const listContext = useContext(SuspenseListContext);
|
|
@@ -1497,6 +1508,7 @@ exports.createContext = createContext;
|
|
|
1497
1508
|
exports.createDeferred = createDeferred;
|
|
1498
1509
|
exports.createEffect = createEffect;
|
|
1499
1510
|
exports.createMemo = createMemo;
|
|
1511
|
+
exports.createReaction = createReaction;
|
|
1500
1512
|
exports.createRenderEffect = createRenderEffect;
|
|
1501
1513
|
exports.createResource = createResource;
|
|
1502
1514
|
exports.createRoot = createRoot;
|
package/dist/solid.js
CHANGED
|
@@ -127,7 +127,7 @@ function nextHydrateContext() {
|
|
|
127
127
|
|
|
128
128
|
const equalFn = (a, b) => a === b;
|
|
129
129
|
const $PROXY = Symbol("solid-proxy");
|
|
130
|
-
const $DEVCOMP = Symbol(
|
|
130
|
+
const $DEVCOMP = Symbol("solid-dev-component");
|
|
131
131
|
const signalOptions = {
|
|
132
132
|
equals: equalFn
|
|
133
133
|
};
|
|
@@ -164,14 +164,12 @@ function createRoot(fn, detachedOwner) {
|
|
|
164
164
|
};
|
|
165
165
|
Owner = root;
|
|
166
166
|
Listener = null;
|
|
167
|
-
let result;
|
|
168
167
|
try {
|
|
169
|
-
runUpdates(() =>
|
|
168
|
+
return runUpdates(() => fn(() => cleanNode(root)), true);
|
|
170
169
|
} finally {
|
|
171
170
|
Listener = listener;
|
|
172
171
|
Owner = owner;
|
|
173
172
|
}
|
|
174
|
-
return result;
|
|
175
173
|
}
|
|
176
174
|
function createSignal(value, options) {
|
|
177
175
|
options = options ? Object.assign({}, signalOptions, options) : signalOptions;
|
|
@@ -204,7 +202,21 @@ function createEffect(fn, value, options) {
|
|
|
204
202
|
s = SuspenseContext && lookup(Owner, SuspenseContext.id);
|
|
205
203
|
if (s) c.suspense = s;
|
|
206
204
|
c.user = true;
|
|
207
|
-
Effects
|
|
205
|
+
Effects ? Effects.push(c) : queueMicrotask(() => updateComputation(c));
|
|
206
|
+
}
|
|
207
|
+
function createReaction(onInvalidate, options) {
|
|
208
|
+
let fn;
|
|
209
|
+
const c = createComputation(() => {
|
|
210
|
+
fn ? fn() : untrack(onInvalidate);
|
|
211
|
+
fn = undefined;
|
|
212
|
+
}, undefined, false, 0),
|
|
213
|
+
s = SuspenseContext && lookup(Owner, SuspenseContext.id);
|
|
214
|
+
if (s) c.suspense = s;
|
|
215
|
+
c.user = true;
|
|
216
|
+
return tracking => {
|
|
217
|
+
fn = tracking;
|
|
218
|
+
updateComputation(c);
|
|
219
|
+
};
|
|
208
220
|
}
|
|
209
221
|
function createMemo(fn, value, options) {
|
|
210
222
|
options = options ? Object.assign({}, signalOptions, options) : signalOptions;
|
|
@@ -230,11 +242,11 @@ function createResource(source, fetcher, options) {
|
|
|
230
242
|
fetcher = source;
|
|
231
243
|
source = true;
|
|
232
244
|
}
|
|
233
|
-
options
|
|
245
|
+
options || (options = {});
|
|
234
246
|
if (options.globalRefetch !== false) {
|
|
235
247
|
Resources || (Resources = new Set());
|
|
236
248
|
Resources.add(load);
|
|
237
|
-
onCleanup(() => Resources.delete(load));
|
|
249
|
+
Owner && onCleanup(() => Resources.delete(load));
|
|
238
250
|
}
|
|
239
251
|
const contexts = new Set(),
|
|
240
252
|
[s, set] = createSignal(options.initialValue),
|
|
@@ -345,7 +357,7 @@ function createResource(source, fetcher, options) {
|
|
|
345
357
|
}
|
|
346
358
|
let Resources;
|
|
347
359
|
function refetchResources(info) {
|
|
348
|
-
Resources && Resources.
|
|
360
|
+
return Resources && Promise.all([...Resources].map(fn => fn(info)));
|
|
349
361
|
}
|
|
350
362
|
function createDeferred(source, options) {
|
|
351
363
|
let t,
|
|
@@ -487,7 +499,7 @@ function startTransition(fn) {
|
|
|
487
499
|
queue: new Set(),
|
|
488
500
|
running: true
|
|
489
501
|
});
|
|
490
|
-
t.done
|
|
502
|
+
t.done || (t.done = new Promise(res => t.resolve = res));
|
|
491
503
|
t.running = true;
|
|
492
504
|
}
|
|
493
505
|
batch(fn);
|
|
@@ -716,7 +728,7 @@ function runUpdates(fn, init) {
|
|
|
716
728
|
if (Effects) wait = true;else Effects = [];
|
|
717
729
|
ExecCount++;
|
|
718
730
|
try {
|
|
719
|
-
fn();
|
|
731
|
+
return fn();
|
|
720
732
|
} catch (err) {
|
|
721
733
|
handleError(err);
|
|
722
734
|
} finally {
|
|
@@ -875,7 +887,7 @@ function handleError(err) {
|
|
|
875
887
|
fns.forEach(f => f(err));
|
|
876
888
|
}
|
|
877
889
|
function lookup(owner, key) {
|
|
878
|
-
return owner && (owner.context && owner.context[key]
|
|
890
|
+
return owner && (owner.context && owner.context[key] !== undefined ? owner.context[key] : owner.owner && lookup(owner.owner, key));
|
|
879
891
|
}
|
|
880
892
|
function resolveChildren(children) {
|
|
881
893
|
if (typeof children === "function" && !children.length) return resolveChildren(children());
|
|
@@ -1411,20 +1423,19 @@ function Suspense(props) {
|
|
|
1411
1423
|
const key = sharedConfig.context.id + sharedConfig.context.count;
|
|
1412
1424
|
p = sharedConfig.load(key);
|
|
1413
1425
|
if (p) {
|
|
1414
|
-
if (typeof p !== "object" || !("then" in p))
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
}
|
|
1426
|
+
if (typeof p !== "object" || !("then" in p)) p = Promise.resolve(p);
|
|
1427
|
+
const [s, set] = createSignal(undefined, {
|
|
1428
|
+
equals: false
|
|
1429
|
+
});
|
|
1430
|
+
flicker = s;
|
|
1431
|
+
p.then(err => {
|
|
1432
|
+
if (error = err) return set();
|
|
1433
|
+
sharedConfig.gather(key);
|
|
1434
|
+
setHydrateContext(ctx);
|
|
1435
|
+
set();
|
|
1436
|
+
setHydrateContext();
|
|
1437
|
+
p = undefined;
|
|
1438
|
+
});
|
|
1428
1439
|
}
|
|
1429
1440
|
}
|
|
1430
1441
|
const listContext = useContext(SuspenseListContext);
|
|
@@ -1473,4 +1484,4 @@ function Suspense(props) {
|
|
|
1473
1484
|
|
|
1474
1485
|
let DEV;
|
|
1475
1486
|
|
|
1476
|
-
export { $DEVCOMP, $PROXY, DEV, ErrorBoundary, For, Index, Match, Show, Suspense, SuspenseList, Switch, batch, cancelCallback, children, createComponent, createComputed, createContext, createDeferred, createEffect, createMemo, createRenderEffect, createResource, createRoot, createSelector, createSignal, createUniqueId, enableExternalSource, enableHydration, enableScheduling, equalFn, from, getListener, getOwner, indexArray, lazy, mapArray, mergeProps, observable, on, onCleanup, onError, onMount, refetchResources, requestCallback, runWithOwner, sharedConfig, splitProps, startTransition, untrack, useContext, useTransition };
|
|
1487
|
+
export { $DEVCOMP, $PROXY, DEV, ErrorBoundary, For, Index, Match, Show, Suspense, SuspenseList, Switch, batch, cancelCallback, children, createComponent, createComputed, createContext, createDeferred, createEffect, createMemo, createReaction, createRenderEffect, createResource, createRoot, createSelector, createSignal, createUniqueId, enableExternalSource, enableHydration, enableScheduling, equalFn, from, getListener, getOwner, indexArray, lazy, mapArray, mergeProps, observable, on, onCleanup, onError, onMount, refetchResources, requestCallback, runWithOwner, sharedConfig, splitProps, startTransition, untrack, useContext, useTransition };
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "solid-js",
|
|
3
3
|
"description": "A declarative JavaScript library for building user interfaces.",
|
|
4
|
-
"version": "1.3.
|
|
4
|
+
"version": "1.3.2",
|
|
5
5
|
"author": "Ryan Carniato",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"homepage": "https://solidjs.com",
|
|
@@ -124,9 +124,9 @@
|
|
|
124
124
|
"build": "npm-run-all -cnl build:*",
|
|
125
125
|
"build:link": "symlink-dir . node_modules/solid-js",
|
|
126
126
|
"build:js": "ncp ../../node_modules/dom-expressions/src/jsx.d.ts ./src/jsx.d.ts && rollup -c",
|
|
127
|
-
"build:types": "tsc",
|
|
128
|
-
"build:types-store": "tsc --project ./store/tsconfig.json && tsconfig-replace-paths --project ./store/tsconfig.types.json",
|
|
129
|
-
"build:types-web": "tsc --project ./web/tsconfig.json && tsconfig-replace-paths --project ./web/tsconfig.types.json",
|
|
127
|
+
"build:types": "tsc --project ./tsconfig.build.json",
|
|
128
|
+
"build:types-store": "tsc --project ./store/tsconfig.build.json && tsconfig-replace-paths --project ./store/tsconfig.types.json",
|
|
129
|
+
"build:types-web": "tsc --project ./web/tsconfig.build.json && tsconfig-replace-paths --project ./web/tsconfig.types.json",
|
|
130
130
|
"build:types-html": "tsc --project ./html/tsconfig.json",
|
|
131
131
|
"build:types-h": "tsc --project ./h/tsconfig.json",
|
|
132
132
|
"build:types-universal": "tsc --project ./universal/tsconfig.json",
|
|
@@ -144,5 +144,5 @@
|
|
|
144
144
|
"compiler",
|
|
145
145
|
"performance"
|
|
146
146
|
],
|
|
147
|
-
"gitHead": "
|
|
147
|
+
"gitHead": "b0aa7b227de8a3b4dc686690207d54a8af244efc"
|
|
148
148
|
}
|
package/store/dist/dev.cjs
CHANGED
|
@@ -103,7 +103,7 @@ const proxyTraps$1 = {
|
|
|
103
103
|
node = nodes[property] || (nodes[property] = createDataNode());
|
|
104
104
|
node();
|
|
105
105
|
}
|
|
106
|
-
return wrappable ? wrap$1(value, target[$NAME] && `${target[$NAME]}:${property}`) : value;
|
|
106
|
+
return wrappable ? wrap$1(value, target[$NAME] && `${target[$NAME]}:${property.toString()}`) : value;
|
|
107
107
|
},
|
|
108
108
|
set() {
|
|
109
109
|
console.warn("Cannot mutate a Store directly");
|
|
@@ -344,8 +344,7 @@ function reconcile(value, options = {}) {
|
|
|
344
344
|
key = "id"
|
|
345
345
|
} = options,
|
|
346
346
|
v = unwrap(value);
|
|
347
|
-
return
|
|
348
|
-
const state = s;
|
|
347
|
+
return state => {
|
|
349
348
|
if (!isWrappable(state) || !isWrappable(v)) return v;
|
|
350
349
|
applyState(v, {
|
|
351
350
|
state
|
|
@@ -369,8 +368,7 @@ const setterTraps = {
|
|
|
369
368
|
}
|
|
370
369
|
};
|
|
371
370
|
function produce(fn) {
|
|
372
|
-
return
|
|
373
|
-
const state = s;
|
|
371
|
+
return state => {
|
|
374
372
|
if (isWrappable(state)) fn(new Proxy(state, setterTraps));
|
|
375
373
|
return state;
|
|
376
374
|
};
|
package/store/dist/dev.js
CHANGED
|
@@ -99,7 +99,7 @@ const proxyTraps$1 = {
|
|
|
99
99
|
node = nodes[property] || (nodes[property] = createDataNode());
|
|
100
100
|
node();
|
|
101
101
|
}
|
|
102
|
-
return wrappable ? wrap$1(value, target[$NAME] && `${target[$NAME]}:${property}`) : value;
|
|
102
|
+
return wrappable ? wrap$1(value, target[$NAME] && `${target[$NAME]}:${property.toString()}`) : value;
|
|
103
103
|
},
|
|
104
104
|
set() {
|
|
105
105
|
console.warn("Cannot mutate a Store directly");
|
|
@@ -340,8 +340,7 @@ function reconcile(value, options = {}) {
|
|
|
340
340
|
key = "id"
|
|
341
341
|
} = options,
|
|
342
342
|
v = unwrap(value);
|
|
343
|
-
return
|
|
344
|
-
const state = s;
|
|
343
|
+
return state => {
|
|
345
344
|
if (!isWrappable(state) || !isWrappable(v)) return v;
|
|
346
345
|
applyState(v, {
|
|
347
346
|
state
|
|
@@ -365,8 +364,7 @@ const setterTraps = {
|
|
|
365
364
|
}
|
|
366
365
|
};
|
|
367
366
|
function produce(fn) {
|
|
368
|
-
return
|
|
369
|
-
const state = s;
|
|
367
|
+
return state => {
|
|
370
368
|
if (isWrappable(state)) fn(new Proxy(state, setterTraps));
|
|
371
369
|
return state;
|
|
372
370
|
};
|
package/store/dist/store.cjs
CHANGED
|
@@ -324,8 +324,7 @@ function reconcile(value, options = {}) {
|
|
|
324
324
|
key = "id"
|
|
325
325
|
} = options,
|
|
326
326
|
v = unwrap(value);
|
|
327
|
-
return
|
|
328
|
-
const state = s;
|
|
327
|
+
return state => {
|
|
329
328
|
if (!isWrappable(state) || !isWrappable(v)) return v;
|
|
330
329
|
applyState(v, {
|
|
331
330
|
state
|
|
@@ -349,8 +348,7 @@ const setterTraps = {
|
|
|
349
348
|
}
|
|
350
349
|
};
|
|
351
350
|
function produce(fn) {
|
|
352
|
-
return
|
|
353
|
-
const state = s;
|
|
351
|
+
return state => {
|
|
354
352
|
if (isWrappable(state)) fn(new Proxy(state, setterTraps));
|
|
355
353
|
return state;
|
|
356
354
|
};
|
package/store/dist/store.js
CHANGED
|
@@ -320,8 +320,7 @@ function reconcile(value, options = {}) {
|
|
|
320
320
|
key = "id"
|
|
321
321
|
} = options,
|
|
322
322
|
v = unwrap(value);
|
|
323
|
-
return
|
|
324
|
-
const state = s;
|
|
323
|
+
return state => {
|
|
325
324
|
if (!isWrappable(state) || !isWrappable(v)) return v;
|
|
326
325
|
applyState(v, {
|
|
327
326
|
state
|
|
@@ -345,8 +344,7 @@ const setterTraps = {
|
|
|
345
344
|
}
|
|
346
345
|
};
|
|
347
346
|
function produce(fn) {
|
|
348
|
-
return
|
|
349
|
-
const state = s;
|
|
347
|
+
return state => {
|
|
350
348
|
if (isWrappable(state)) fn(new Proxy(state, setterTraps));
|
|
351
349
|
return state;
|
|
352
350
|
};
|
package/store/types/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { createStore, unwrap, $RAW } from "./store";
|
|
2
|
-
export type { Store, SetStoreFunction, NotWrappable, StoreNode, StoreSetter, StorePathRange, ArrayFilterFn, Part, Next,
|
|
2
|
+
export type { Store, SetStoreFunction, NotWrappable, StoreNode, StoreSetter, StorePathRange, ArrayFilterFn, Part, Next, WrappableNext, DeepReadonly } from "./store";
|
|
3
3
|
export * from "./mutable";
|
|
4
4
|
export * from "./modifiers";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Store
|
|
1
|
+
import { Store } from "./store";
|
|
2
2
|
export declare type ReconcileOptions = {
|
|
3
3
|
key?: string | null;
|
|
4
4
|
merge?: boolean;
|
|
5
5
|
};
|
|
6
|
-
export declare function reconcile<T>(value: T
|
|
7
|
-
export declare function produce<T>(fn: (state: T) => void): (state:
|
|
6
|
+
export declare function reconcile<T>(value: T, options?: ReconcileOptions): (state: unknown) => Store<T>;
|
|
7
|
+
export declare function produce<T>(fn: (state: T) => void): (state: Store<T>) => Store<T>;
|
package/store/types/mutable.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { StoreNode
|
|
2
|
-
export declare function createMutable<T extends StoreNode>(state: T
|
|
1
|
+
import { StoreNode } from "./store";
|
|
2
|
+
export declare function createMutable<T extends StoreNode>(state: T, options?: {
|
|
3
3
|
name?: string;
|
|
4
|
-
}):
|
|
4
|
+
}): T;
|
package/store/types/server.d.ts
CHANGED
|
@@ -1,50 +1,15 @@
|
|
|
1
|
+
import { SetStoreFunction, Store } from "store";
|
|
1
2
|
export declare const $RAW: unique symbol;
|
|
2
|
-
declare type AddSymbolToPrimitive<T> = T extends {
|
|
3
|
-
[Symbol.toPrimitive]: infer V;
|
|
4
|
-
} ? {
|
|
5
|
-
[Symbol.toPrimitive]: V;
|
|
6
|
-
} : {};
|
|
7
|
-
declare type AddCallable<T> = T extends {
|
|
8
|
-
(...x: any[]): infer V;
|
|
9
|
-
} ? {
|
|
10
|
-
(...x: Parameters<T>): V;
|
|
11
|
-
} : {};
|
|
12
|
-
declare type NotWrappable = string | number | boolean | Function | null;
|
|
13
|
-
export declare type Store<T> = {
|
|
14
|
-
[P in keyof T]: T[P] extends object ? Store<T[P]> : T[P];
|
|
15
|
-
} & {
|
|
16
|
-
[$RAW]?: T;
|
|
17
|
-
} & AddSymbolToPrimitive<T> & AddCallable<T>;
|
|
18
3
|
export declare function isWrappable(obj: any): boolean;
|
|
19
4
|
export declare function unwrap<T>(item: any): T;
|
|
20
5
|
export declare function setProperty(state: any, property: string | number, value: any, force?: boolean): void;
|
|
21
6
|
export declare function updatePath(current: any, path: any[], traversed?: (number | string)[]): void;
|
|
22
|
-
declare type StoreSetter<T> = Partial<T> | ((prevState: T extends NotWrappable ? T : Store<T>, traversed?: (string | number)[]) => Partial<T> | void);
|
|
23
|
-
declare type StorePathRange = {
|
|
24
|
-
from?: number;
|
|
25
|
-
to?: number;
|
|
26
|
-
by?: number;
|
|
27
|
-
};
|
|
28
|
-
declare type ArrayFilterFn<T> = (item: T extends any[] ? T[number] : never, index: number) => boolean;
|
|
29
|
-
declare type Part<T> = keyof T | Array<keyof T> | StorePathRange | ArrayFilterFn<T>;
|
|
30
|
-
declare type Next<T, K> = K extends keyof T ? T[K] : K extends Array<keyof T> ? T[K[number]] : T extends any[] ? K extends StorePathRange ? T[number] : K extends ArrayFilterFn<T> ? T[number] : never : never;
|
|
31
|
-
export interface SetStoreFunction<T> {
|
|
32
|
-
<Setter extends StoreSetter<T>>(...args: [Setter]): void;
|
|
33
|
-
<K1 extends Part<T>, Setter extends StoreSetter<Next<T, K1>>>(...args: [K1, Setter]): void;
|
|
34
|
-
<K1 extends Part<T>, K2 extends Part<Next<T, K1>>, Setter extends StoreSetter<Next<Next<T, K1>, K2>>>(...args: [K1, K2, Setter]): void;
|
|
35
|
-
<K1 extends Part<T>, K2 extends Part<Next<T, K1>>, K3 extends Part<Next<Next<T, K1>, K2>>, Setter extends StoreSetter<Next<Next<Next<T, K1>, K2>, K3>>>(...args: [K1, K2, K3, Setter]): void;
|
|
36
|
-
<K1 extends Part<T>, K2 extends Part<Next<T, K1>>, K3 extends Part<Next<Next<T, K1>, K2>>, K4 extends Part<Next<Next<Next<T, K1>, K2>, K3>>, Setter extends StoreSetter<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>>>(...args: [K1, K2, K3, K4, Setter]): void;
|
|
37
|
-
<K1 extends Part<T>, K2 extends Part<Next<T, K1>>, K3 extends Part<Next<Next<T, K1>, K2>>, K4 extends Part<Next<Next<Next<T, K1>, K2>, K3>>, K5 extends Part<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>>, Setter extends StoreSetter<Next<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>, K5>>>(...args: [K1, K2, K3, K4, K5, Setter]): void;
|
|
38
|
-
<K1 extends Part<T>, K2 extends Part<Next<T, K1>>, K3 extends Part<Next<Next<T, K1>, K2>>, K4 extends Part<Next<Next<Next<T, K1>, K2>, K3>>, K5 extends Part<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>>, K6 extends Part<Next<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>, K5>>, Setter extends StoreSetter<Next<Next<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>, K5>, K6>>>(...args: [K1, K2, K3, K4, K5, K6, Setter]): void;
|
|
39
|
-
<K1 extends Part<T>, K2 extends Part<Next<T, K1>>, K3 extends Part<Next<Next<T, K1>, K2>>, K4 extends Part<Next<Next<Next<T, K1>, K2>, K3>>, K5 extends Part<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>>, K6 extends Part<Next<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>, K5>>, K7 extends Part<Next<Next<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>, K5>, K6>>, Setter extends StoreSetter<Next<Next<Next<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>, K5>, K6>, K7>>>(...args: [K1, K2, K3, K4, K5, K6, K7, Setter]): void;
|
|
40
|
-
<K1 extends Part<T>, K2 extends Part<Next<T, K1>>, K3 extends Part<Next<Next<T, K1>, K2>>, K4 extends Part<Next<Next<Next<T, K1>, K2>, K3>>, K5 extends Part<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>>, K6 extends Part<Next<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>, K5>>, K7 extends Part<Next<Next<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>, K5>, K6>>, K8 extends Part<Next<Next<Next<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>, K5>, K6>, K7>>>(...args: [K1, K2, K3, K4, K5, K6, K7, K8, ...(Part<any> | StoreSetter<any>)[]]): void;
|
|
41
|
-
}
|
|
42
7
|
export declare function createStore<T>(state: T | Store<T>): [Store<T>, SetStoreFunction<T>];
|
|
43
8
|
export declare function createMutable<T>(state: T | Store<T>): Store<T>;
|
|
44
9
|
declare type ReconcileOptions = {
|
|
45
10
|
key?: string | null;
|
|
46
11
|
merge?: boolean;
|
|
47
12
|
};
|
|
48
|
-
export declare function reconcile<T>(value: T | Store<T>, options?: ReconcileOptions): (state:
|
|
49
|
-
export declare function produce<T>(fn: (state: T) => void): (state:
|
|
13
|
+
export declare function reconcile<T>(value: T | Store<T>, options?: ReconcileOptions): (state: Store<T>) => void;
|
|
14
|
+
export declare function produce<T>(fn: (state: T) => void): (state: Store<T>) => Store<T>;
|
|
50
15
|
export {};
|
package/store/types/store.d.ts
CHANGED
|
@@ -1,72 +1,44 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Accessor } from "../..";
|
|
2
2
|
export declare const $RAW: unique symbol, $NODE: unique symbol, $NAME: unique symbol;
|
|
3
|
-
export declare type StoreNode =
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
[$NAME]?: string;
|
|
7
|
-
[k: string]: any;
|
|
8
|
-
[k: number]: any;
|
|
9
|
-
};
|
|
10
|
-
declare type AddSymbolToPrimitive<T> = T extends {
|
|
11
|
-
[Symbol.toPrimitive]: infer V;
|
|
12
|
-
} ? {
|
|
13
|
-
[Symbol.toPrimitive]: V;
|
|
14
|
-
} : {};
|
|
15
|
-
declare type AddSymbolIterator<T> = T extends {
|
|
16
|
-
[Symbol.iterator]: infer V;
|
|
17
|
-
} ? {
|
|
18
|
-
[Symbol.iterator]: V;
|
|
19
|
-
} : {};
|
|
20
|
-
declare type AddSymbolToStringTag<T> = T extends {
|
|
21
|
-
[Symbol.toStringTag]: infer V;
|
|
22
|
-
} ? {
|
|
23
|
-
[Symbol.toStringTag]: V;
|
|
24
|
-
} : {};
|
|
25
|
-
declare type AddCallable<T> = T extends {
|
|
26
|
-
(...x: any[]): infer V;
|
|
27
|
-
} ? {
|
|
28
|
-
(...x: Parameters<T>): V;
|
|
29
|
-
} : {};
|
|
30
|
-
export declare type NotWrappable = string | number | boolean | Function | null;
|
|
31
|
-
export declare type Store<T> = {
|
|
32
|
-
[P in keyof T]: T[P] extends object ? Store<T[P]> & T[P] : T[P];
|
|
33
|
-
} & {
|
|
34
|
-
[$RAW]?: T;
|
|
35
|
-
} & AddSymbolToPrimitive<T> & AddSymbolIterator<T> & AddSymbolToStringTag<T> & AddCallable<T>;
|
|
3
|
+
export declare type StoreNode = Record<keyof any, any>;
|
|
4
|
+
export declare type NotWrappable = string | number | bigint | symbol | boolean | Function | null | undefined;
|
|
5
|
+
export declare type Store<T> = DeepReadonly<T>;
|
|
36
6
|
export declare function isWrappable(obj: any): any;
|
|
37
7
|
export declare function unwrap<T extends StoreNode>(item: any, set?: Set<unknown>): T;
|
|
38
8
|
export declare function getDataNodes(target: StoreNode): any;
|
|
39
|
-
export declare function proxyDescriptor(target: StoreNode, property:
|
|
9
|
+
export declare function proxyDescriptor(target: StoreNode, property: keyof any): PropertyDescriptor | undefined;
|
|
40
10
|
export declare function ownKeys(target: StoreNode): (string | symbol)[];
|
|
41
11
|
export declare function createDataNode(): Accessor<void> & {
|
|
42
12
|
$: () => void;
|
|
43
13
|
};
|
|
44
|
-
export declare function setProperty(state: StoreNode, property:
|
|
45
|
-
export declare function updatePath(current: StoreNode, path: any[], traversed?: (
|
|
46
|
-
export declare type
|
|
47
|
-
readonly [K in keyof T]: DeepReadonly<T[K]>;
|
|
14
|
+
export declare function setProperty(state: StoreNode, property: keyof any, value: any): void;
|
|
15
|
+
export declare function updatePath(current: StoreNode, path: any[], traversed?: (keyof any)[]): void;
|
|
16
|
+
export declare type DeepReadonly<T> = {
|
|
17
|
+
readonly [K in keyof T]: T[K] extends NotWrappable ? T[K] : DeepReadonly<T[K]>;
|
|
48
18
|
};
|
|
49
|
-
export declare type
|
|
50
|
-
export declare type StoreSetter<T> = Partial<T> | ((prevState: T extends NotWrappable ? T : Store<DeepReadonly<T>>, traversed?: (string | number)[]) => Partial<T | DeepReadonly<T>> | void);
|
|
19
|
+
export declare type StoreSetter<T> = T | Partial<T> | ((prevState: T, traversed?: (keyof any)[]) => Partial<T> | void);
|
|
51
20
|
export declare type StorePathRange = {
|
|
52
21
|
from?: number;
|
|
53
22
|
to?: number;
|
|
54
23
|
by?: number;
|
|
55
24
|
};
|
|
56
|
-
export declare type ArrayFilterFn<T> = (item: T
|
|
57
|
-
export declare type Part<T> = T extends
|
|
58
|
-
export declare type
|
|
59
|
-
export declare type
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
<K1 extends Part<T>, K2 extends Part<
|
|
65
|
-
<K1 extends Part<T>, K2 extends Part<
|
|
66
|
-
<K1 extends Part<T>, K2 extends Part<
|
|
67
|
-
<K1 extends Part<T>, K2 extends Part<
|
|
68
|
-
<K1 extends Part<T>, K2 extends Part<
|
|
69
|
-
<K1 extends Part<T>, K2 extends Part<
|
|
25
|
+
export declare type ArrayFilterFn<T> = (item: T, index: number) => boolean;
|
|
26
|
+
export declare type Part<T> = [T] extends [never] ? never : [keyof T] extends [never] ? never : keyof T | (keyof T)[] | (number extends keyof T ? ArrayFilterFn<T[number]> | StorePathRange : never);
|
|
27
|
+
export declare type Next<T, K extends Part<T>> = [K] extends [never] ? never : K extends keyof T ? T[K] : K extends (keyof T)[] ? T[K[number]] : number extends keyof T ? T[number] : never;
|
|
28
|
+
export declare type WrappableNext<T, K extends Part<T>> = Exclude<Next<T, K>, NotWrappable>;
|
|
29
|
+
declare type DistributeRest<T, K extends Part<T>> = K extends K ? [K, ...Rest<Next<T, K>>] : never;
|
|
30
|
+
export declare type Rest<T> = 0 extends 1 & T ? [...(keyof any)[], any] : [StoreSetter<T>] | (T extends NotWrappable ? never : DistributeRest<T, Part<T>>);
|
|
31
|
+
export declare type SetStoreFunction<T> = _SetStoreFunction<Store<T>>;
|
|
32
|
+
interface _SetStoreFunction<T> {
|
|
33
|
+
<K1 extends Part<T>, K2 extends Part<T1>, K3 extends Part<T2>, K4 extends Part<T3>, K5 extends Part<T4>, K6 extends Part<T5>, K7 extends Part<T6>, T1 extends WrappableNext<T, K1>, T2 extends WrappableNext<T1, K2>, T3 extends WrappableNext<T2, K3>, T4 extends WrappableNext<T3, K4>, T5 extends WrappableNext<T4, K5>, T6 extends WrappableNext<T5, K6>>(k1: K1, k2: K2, k3: K3, k4: K4, k5: K5, k6: K6, k7: K7, ...rest: Rest<Next<T6, K7>>): void;
|
|
34
|
+
<K1 extends Part<T>, K2 extends Part<T1>, K3 extends Part<T2>, K4 extends Part<T3>, K5 extends Part<T4>, K6 extends Part<T5>, K7 extends Part<T6>, T1 extends WrappableNext<T, K1>, T2 extends WrappableNext<T1, K2>, T3 extends WrappableNext<T2, K3>, T4 extends WrappableNext<T3, K4>, T5 extends WrappableNext<T4, K5>, T6 extends WrappableNext<T5, K6>>(k1: K1, k2: K2, k3: K3, k4: K4, k5: K5, k6: K6, k7: K7, setter: StoreSetter<Next<T6, K7>>): void;
|
|
35
|
+
<K1 extends Part<T>, K2 extends Part<T1>, K3 extends Part<T2>, K4 extends Part<T3>, K5 extends Part<T4>, K6 extends Part<T5>, T1 extends WrappableNext<T, K1>, T2 extends WrappableNext<T1, K2>, T3 extends WrappableNext<T2, K3>, T4 extends WrappableNext<T3, K4>, T5 extends WrappableNext<T4, K5>>(k1: K1, k2: K2, k3: K3, k4: K4, k5: K5, k6: K6, setter: StoreSetter<Next<T5, K6>>): void;
|
|
36
|
+
<K1 extends Part<T>, K2 extends Part<T1>, K3 extends Part<T2>, K4 extends Part<T3>, K5 extends Part<T4>, T1 extends WrappableNext<T, K1>, T2 extends WrappableNext<T1, K2>, T3 extends WrappableNext<T2, K3>, T4 extends WrappableNext<T3, K4>>(k1: K1, k2: K2, k3: K3, k4: K4, k5: K5, setter: StoreSetter<Next<T4, K5>>): void;
|
|
37
|
+
<K1 extends Part<T>, K2 extends Part<T1>, K3 extends Part<T2>, K4 extends Part<T3>, T1 extends WrappableNext<T, K1>, T2 extends WrappableNext<T1, K2>, T3 extends WrappableNext<T2, K3>>(k1: K1, k2: K2, k3: K3, k4: K4, setter: StoreSetter<Next<T3, K4>>): void;
|
|
38
|
+
<K1 extends Part<T>, K2 extends Part<T1>, K3 extends Part<T2>, T1 extends WrappableNext<T, K1>, T2 extends WrappableNext<T1, K2>>(k1: K1, k2: K2, k3: K3, setter: StoreSetter<Next<T2, K3>>): void;
|
|
39
|
+
<K1 extends Part<T>, K2 extends Part<T1>, T1 extends WrappableNext<T, K1>>(k1: K1, k2: K2, setter: StoreSetter<Next<T1, K2>>): void;
|
|
40
|
+
<K extends Part<T>>(k: K, setter: StoreSetter<Next<T, K>>): void;
|
|
41
|
+
(setter: StoreSetter<T>): void;
|
|
70
42
|
}
|
|
71
43
|
/**
|
|
72
44
|
* creates a reactive store that can be read through a proxy object and written with a setter function
|
package/types/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { createRoot, createSignal, createEffect, createRenderEffect, createComputed, createDeferred, createSelector, createMemo, createResource, onMount, onCleanup, onError, untrack, batch, on, enableScheduling, enableExternalSource, startTransition, useTransition, refetchResources, createContext, useContext, children, getListener, getOwner, runWithOwner, equalFn, $DEVCOMP, $PROXY } from "./reactive/signal";
|
|
1
|
+
export { createRoot, createSignal, createEffect, createRenderEffect, createComputed, createReaction, createDeferred, createSelector, createMemo, createResource, onMount, onCleanup, onError, untrack, batch, on, enableScheduling, enableExternalSource, startTransition, useTransition, refetchResources, createContext, useContext, children, getListener, getOwner, runWithOwner, equalFn, $DEVCOMP, $PROXY } from "./reactive/signal";
|
|
2
2
|
export type { Accessor, Setter, Resource, ResourceReturn, ResourceFetcher, ResourceFetcherInfo, Context, ReturnTypes } from "./reactive/signal";
|
|
3
3
|
export * from "./reactive/observable";
|
|
4
4
|
export * from "./reactive/scheduler";
|
package/types/jsx.d.ts
CHANGED
|
@@ -158,6 +158,20 @@ export declare function createRenderEffect<Next, Init = undefined>(..._: undefin
|
|
|
158
158
|
*/
|
|
159
159
|
export declare function createEffect<Next, Init = Next>(fn: EffectFunction<Init | Next, Next>, value: Init, options?: EffectOptions): void;
|
|
160
160
|
export declare function createEffect<Next, Init = undefined>(..._: undefined extends Init ? [fn: EffectFunction<Init | Next, Next>, value?: Init, options?: EffectOptions] : [fn: EffectFunction<Init | Next, Next>, value: Init, options?: EffectOptions]): void;
|
|
161
|
+
/**
|
|
162
|
+
* Creates a reactive computation that runs after the render phase with flexible tracking
|
|
163
|
+
* ```typescript
|
|
164
|
+
* export function createReaction(
|
|
165
|
+
* onInvalidate: () => void,
|
|
166
|
+
* options?: { name?: string }
|
|
167
|
+
* ): (fn: () => void) => void;
|
|
168
|
+
* ```
|
|
169
|
+
* @param invalidated a function that is called when tracked function is invalidated.
|
|
170
|
+
* @param options allows to set a name in dev mode for debugging purposes
|
|
171
|
+
*
|
|
172
|
+
* @description https://www.solidjs.com/docs/latest/api#createreaction
|
|
173
|
+
*/
|
|
174
|
+
export declare function createReaction(onInvalidate: () => void, options?: EffectOptions): (tracking: () => void) => void;
|
|
161
175
|
interface Memo<Prev, Next = Prev> extends SignalState<Next>, Computation<Next> {
|
|
162
176
|
tOwned?: Computation<Prev | Next, Next>[];
|
|
163
177
|
}
|
|
@@ -171,7 +185,7 @@ export interface MemoOptions<T> extends EffectOptions {
|
|
|
171
185
|
* fn: (v: T) => T,
|
|
172
186
|
* value?: T,
|
|
173
187
|
* options?: { name?: string, equals?: false | ((prev: T, next: T) => boolean) }
|
|
174
|
-
* ): T;
|
|
188
|
+
* ): () => T;
|
|
175
189
|
* ```
|
|
176
190
|
* @param fn a function that receives its previous or the initial value, if set, and returns a new value used to react on a computation
|
|
177
191
|
* @param value an optional initial value for the computation; if set, fn will never receive undefined as first argument
|
|
@@ -236,7 +250,7 @@ export declare function createResource<T, S = true>(fetcher: ResourceFetcher<S,
|
|
|
236
250
|
export declare function createResource<T, S = true>(fetcher: ResourceFetcher<S, T>, options: ResourceOptions<T>): ResourceReturn<T>;
|
|
237
251
|
export declare function createResource<T, S>(source: ResourceSource<S>, fetcher: ResourceFetcher<S, T>, options?: ResourceOptions<undefined>): ResourceReturn<T | undefined>;
|
|
238
252
|
export declare function createResource<T, S>(source: ResourceSource<S>, fetcher: ResourceFetcher<S, T>, options: ResourceOptions<T>): ResourceReturn<T>;
|
|
239
|
-
export declare function refetchResources(info?: unknown):
|
|
253
|
+
export declare function refetchResources(info?: unknown): Promise<any[]>;
|
|
240
254
|
export interface DeferredOptions<T> {
|
|
241
255
|
equals?: false | ((prev: T, next: T) => boolean);
|
|
242
256
|
name?: string;
|
|
@@ -357,7 +371,7 @@ export declare function onCleanup(fn: () => void): () => void;
|
|
|
357
371
|
export declare function onError(fn: (err: any) => void): void;
|
|
358
372
|
export declare function getListener(): Computation<any, any> | null;
|
|
359
373
|
export declare function getOwner(): Owner | null;
|
|
360
|
-
export declare function runWithOwner(o: Owner, fn: () =>
|
|
374
|
+
export declare function runWithOwner<T>(o: Owner, fn: () => T): T;
|
|
361
375
|
export declare function enableScheduling(scheduler?: typeof requestCallback): void;
|
|
362
376
|
/**
|
|
363
377
|
* ```typescript
|
package/types/server/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { createRoot, createSignal, createComputed, createRenderEffect, createEffect, createDeferred, createSelector, createMemo, getListener, onMount, onCleanup, onError, untrack, batch, on, children, createContext, useContext, getOwner, runWithOwner, equalFn, requestCallback, mapArray, observable, from, $PROXY, $DEVCOMP, DEV, enableExternalSource } from "./reactive";
|
|
1
|
+
export { createRoot, createSignal, createComputed, createRenderEffect, createEffect, createReaction, createDeferred, createSelector, createMemo, getListener, onMount, onCleanup, onError, untrack, batch, on, children, createContext, useContext, getOwner, runWithOwner, equalFn, requestCallback, mapArray, observable, from, $PROXY, $DEVCOMP, DEV, enableExternalSource } from "./reactive";
|
|
2
2
|
export { mergeProps, splitProps, createComponent, For, Index, Show, Switch, Match, ErrorBoundary, Suspense, SuspenseList, createResource, enableScheduling, enableHydration, startTransition, useTransition, createUniqueId, lazy, sharedConfig } from "./rendering";
|
|
3
3
|
export type { Component, Resource } from "./rendering";
|
|
@@ -16,6 +16,7 @@ export declare function createSignal<T>(value: T, options?: {
|
|
|
16
16
|
export declare function createComputed<T>(fn: (v?: T) => T, value?: T): void;
|
|
17
17
|
export declare const createRenderEffect: typeof createComputed;
|
|
18
18
|
export declare function createEffect<T>(fn: (v?: T) => T, value?: T): void;
|
|
19
|
+
export declare function createReaction(fn: () => void): (fn: () => void) => void;
|
|
19
20
|
export declare function createMemo<T>(fn: (v?: T) => T, value?: T): () => T;
|
|
20
21
|
export declare function createDeferred<T>(source: () => T): () => T;
|
|
21
22
|
export declare function createSelector<T>(source: () => T, fn: (k: T, value: T) => boolean): (k: T) => boolean;
|
package/web/dist/dev.cjs
CHANGED
|
@@ -59,7 +59,7 @@ function reconcileArrays(parentNode, a, b) {
|
|
|
59
59
|
while (bStart < bEnd) parentNode.insertBefore(b[bStart++], node);
|
|
60
60
|
} else if (bEnd === bStart) {
|
|
61
61
|
while (aStart < aEnd) {
|
|
62
|
-
if (!map || !map.has(a[aStart]))
|
|
62
|
+
if (!map || !map.has(a[aStart])) a[aStart].remove();
|
|
63
63
|
aStart++;
|
|
64
64
|
}
|
|
65
65
|
} else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) {
|
|
@@ -88,7 +88,7 @@ function reconcileArrays(parentNode, a, b) {
|
|
|
88
88
|
while (bStart < index) parentNode.insertBefore(b[bStart++], node);
|
|
89
89
|
} else parentNode.replaceChild(b[bStart++], a[aStart++]);
|
|
90
90
|
} else aStart++;
|
|
91
|
-
} else
|
|
91
|
+
} else a[aStart++].remove();
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
94
|
}
|
|
@@ -347,6 +347,7 @@ function spreadExpression(node, props, prevProps = {}, isSVG, skipChildren) {
|
|
|
347
347
|
return prevProps;
|
|
348
348
|
}
|
|
349
349
|
function insertExpression(parent, value, current, marker, unwrapArray) {
|
|
350
|
+
if (solidJs.sharedConfig.context && !current) current = [...parent.childNodes];
|
|
350
351
|
while (typeof current === "function") current = current();
|
|
351
352
|
if (value === current) return current;
|
|
352
353
|
const t = typeof value,
|
|
@@ -449,10 +450,10 @@ function cleanChildren(parent, current, marker, replacement) {
|
|
|
449
450
|
const el = current[i];
|
|
450
451
|
if (node !== el) {
|
|
451
452
|
const isParent = el.parentNode === parent;
|
|
452
|
-
if (!inserted && !i) isParent ? parent.replaceChild(node, el) : parent.insertBefore(node, marker);else isParent &&
|
|
453
|
+
if (!inserted && !i) isParent ? parent.replaceChild(node, el) : parent.insertBefore(node, marker);else isParent && el.remove();
|
|
453
454
|
} else inserted = true;
|
|
454
455
|
}
|
|
455
|
-
} else parent.insertBefore(node, marker);
|
|
456
|
+
} else if (current instanceof Node) parent.replaceChild(node, current);else parent.insertBefore(node, marker);
|
|
456
457
|
return [node];
|
|
457
458
|
}
|
|
458
459
|
function gatherHydratable(element, root) {
|
package/web/dist/dev.js
CHANGED
|
@@ -56,7 +56,7 @@ function reconcileArrays(parentNode, a, b) {
|
|
|
56
56
|
while (bStart < bEnd) parentNode.insertBefore(b[bStart++], node);
|
|
57
57
|
} else if (bEnd === bStart) {
|
|
58
58
|
while (aStart < aEnd) {
|
|
59
|
-
if (!map || !map.has(a[aStart]))
|
|
59
|
+
if (!map || !map.has(a[aStart])) a[aStart].remove();
|
|
60
60
|
aStart++;
|
|
61
61
|
}
|
|
62
62
|
} else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) {
|
|
@@ -85,7 +85,7 @@ function reconcileArrays(parentNode, a, b) {
|
|
|
85
85
|
while (bStart < index) parentNode.insertBefore(b[bStart++], node);
|
|
86
86
|
} else parentNode.replaceChild(b[bStart++], a[aStart++]);
|
|
87
87
|
} else aStart++;
|
|
88
|
-
} else
|
|
88
|
+
} else a[aStart++].remove();
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
91
|
}
|
|
@@ -344,6 +344,7 @@ function spreadExpression(node, props, prevProps = {}, isSVG, skipChildren) {
|
|
|
344
344
|
return prevProps;
|
|
345
345
|
}
|
|
346
346
|
function insertExpression(parent, value, current, marker, unwrapArray) {
|
|
347
|
+
if (sharedConfig.context && !current) current = [...parent.childNodes];
|
|
347
348
|
while (typeof current === "function") current = current();
|
|
348
349
|
if (value === current) return current;
|
|
349
350
|
const t = typeof value,
|
|
@@ -446,10 +447,10 @@ function cleanChildren(parent, current, marker, replacement) {
|
|
|
446
447
|
const el = current[i];
|
|
447
448
|
if (node !== el) {
|
|
448
449
|
const isParent = el.parentNode === parent;
|
|
449
|
-
if (!inserted && !i) isParent ? parent.replaceChild(node, el) : parent.insertBefore(node, marker);else isParent &&
|
|
450
|
+
if (!inserted && !i) isParent ? parent.replaceChild(node, el) : parent.insertBefore(node, marker);else isParent && el.remove();
|
|
450
451
|
} else inserted = true;
|
|
451
452
|
}
|
|
452
|
-
} else parent.insertBefore(node, marker);
|
|
453
|
+
} else if (current instanceof Node) parent.replaceChild(node, current);else parent.insertBefore(node, marker);
|
|
453
454
|
return [node];
|
|
454
455
|
}
|
|
455
456
|
function gatherHydratable(element, root) {
|
package/web/dist/server.cjs
CHANGED
|
@@ -575,8 +575,8 @@ function getHydrationKey() {
|
|
|
575
575
|
function generateHydrationScript({
|
|
576
576
|
eventNames = ["click", "input"],
|
|
577
577
|
nonce
|
|
578
|
-
}) {
|
|
579
|
-
return `<script${nonce ? ` nonce="${nonce}"` : ""}>var e,t;e=window._$HY||(_$HY={events:[],completed:new WeakSet,r:{}}),t=e=>e&&e.hasAttribute&&(e.hasAttribute("data-hk")?e:t(e.host&&e.host instanceof Node?e.host:e.parentNode)),["${eventNames.join('","')}"].forEach((o=>document.addEventListener(o,(o=>{let s=o.composedPath&&o.composedPath()[0]||o.target,a=t(s);a&&!e.completed.has(a)&&e.events.push([a,o])})))),e.init=(t,o)=>{e.r[t]=[new Promise(((e,t)=>o=e)),o]},e.set=(t,o,s)=>{(s=e.r[t])&&s[1](o),e.r[t]=[o]},e.unset=t=>{delete e.r[t]},e.load=(t,o)=>{if(o=e.r[t])return o[0]};</script
|
|
578
|
+
} = {}) {
|
|
579
|
+
return `<script${nonce ? ` nonce="${nonce}"` : ""}>var e,t;e=window._$HY||(_$HY={events:[],completed:new WeakSet,r:{}}),t=e=>e&&e.hasAttribute&&(e.hasAttribute("data-hk")?e:t(e.host&&e.host instanceof Node?e.host:e.parentNode)),["${eventNames.join('","')}"].forEach((o=>document.addEventListener(o,(o=>{let s=o.composedPath&&o.composedPath()[0]||o.target,a=t(s);a&&!e.completed.has(a)&&e.events.push([a,o])})))),e.init=(t,o)=>{e.r[t]=[new Promise(((e,t)=>o=e)),o]},e.set=(t,o,s)=>{(s=e.r[t])&&s[1](o),e.r[t]=[o]},e.unset=t=>{delete e.r[t]},e.load=(t,o)=>{if(o=e.r[t])return o[0]};</script><!--xs-->`;
|
|
580
580
|
}
|
|
581
581
|
function injectAssets(assets, html) {
|
|
582
582
|
for (let i = 0; i < assets.length; i++) {
|
|
@@ -586,7 +586,7 @@ function injectAssets(assets, html) {
|
|
|
586
586
|
}
|
|
587
587
|
function injectScripts(html, scripts, nonce) {
|
|
588
588
|
const tag = `<script${nonce ? ` nonce="${nonce}"` : ""}>${scripts}</script>`;
|
|
589
|
-
const index = html.indexOf("
|
|
589
|
+
const index = html.indexOf("<!--xs-->");
|
|
590
590
|
if (index > -1) {
|
|
591
591
|
return html.slice(0, index) + tag + html.slice(index);
|
|
592
592
|
}
|
|
@@ -607,7 +607,7 @@ function waitForFragments(registry, key) {
|
|
|
607
607
|
function serializeSet(registry, key, value) {
|
|
608
608
|
const exist = registry.get(value);
|
|
609
609
|
if (exist) return `_$HY.set("${key}", _$HY.r["${exist}"][0]);`;
|
|
610
|
-
registry.set(value, key);
|
|
610
|
+
value !== null && typeof value === "object" && registry.set(value, key);
|
|
611
611
|
return `_$HY.set("${key}", ${devalue(value)});`;
|
|
612
612
|
}
|
|
613
613
|
function pipeToNodeWritable(code, writable, options = {}) {
|
package/web/dist/server.js
CHANGED
|
@@ -572,8 +572,8 @@ function getHydrationKey() {
|
|
|
572
572
|
function generateHydrationScript({
|
|
573
573
|
eventNames = ["click", "input"],
|
|
574
574
|
nonce
|
|
575
|
-
}) {
|
|
576
|
-
return `<script${nonce ? ` nonce="${nonce}"` : ""}>var e,t;e=window._$HY||(_$HY={events:[],completed:new WeakSet,r:{}}),t=e=>e&&e.hasAttribute&&(e.hasAttribute("data-hk")?e:t(e.host&&e.host instanceof Node?e.host:e.parentNode)),["${eventNames.join('","')}"].forEach((o=>document.addEventListener(o,(o=>{let s=o.composedPath&&o.composedPath()[0]||o.target,a=t(s);a&&!e.completed.has(a)&&e.events.push([a,o])})))),e.init=(t,o)=>{e.r[t]=[new Promise(((e,t)=>o=e)),o]},e.set=(t,o,s)=>{(s=e.r[t])&&s[1](o),e.r[t]=[o]},e.unset=t=>{delete e.r[t]},e.load=(t,o)=>{if(o=e.r[t])return o[0]};</script
|
|
575
|
+
} = {}) {
|
|
576
|
+
return `<script${nonce ? ` nonce="${nonce}"` : ""}>var e,t;e=window._$HY||(_$HY={events:[],completed:new WeakSet,r:{}}),t=e=>e&&e.hasAttribute&&(e.hasAttribute("data-hk")?e:t(e.host&&e.host instanceof Node?e.host:e.parentNode)),["${eventNames.join('","')}"].forEach((o=>document.addEventListener(o,(o=>{let s=o.composedPath&&o.composedPath()[0]||o.target,a=t(s);a&&!e.completed.has(a)&&e.events.push([a,o])})))),e.init=(t,o)=>{e.r[t]=[new Promise(((e,t)=>o=e)),o]},e.set=(t,o,s)=>{(s=e.r[t])&&s[1](o),e.r[t]=[o]},e.unset=t=>{delete e.r[t]},e.load=(t,o)=>{if(o=e.r[t])return o[0]};</script><!--xs-->`;
|
|
577
577
|
}
|
|
578
578
|
function injectAssets(assets, html) {
|
|
579
579
|
for (let i = 0; i < assets.length; i++) {
|
|
@@ -583,7 +583,7 @@ function injectAssets(assets, html) {
|
|
|
583
583
|
}
|
|
584
584
|
function injectScripts(html, scripts, nonce) {
|
|
585
585
|
const tag = `<script${nonce ? ` nonce="${nonce}"` : ""}>${scripts}</script>`;
|
|
586
|
-
const index = html.indexOf("
|
|
586
|
+
const index = html.indexOf("<!--xs-->");
|
|
587
587
|
if (index > -1) {
|
|
588
588
|
return html.slice(0, index) + tag + html.slice(index);
|
|
589
589
|
}
|
|
@@ -604,7 +604,7 @@ function waitForFragments(registry, key) {
|
|
|
604
604
|
function serializeSet(registry, key, value) {
|
|
605
605
|
const exist = registry.get(value);
|
|
606
606
|
if (exist) return `_$HY.set("${key}", _$HY.r["${exist}"][0]);`;
|
|
607
|
-
registry.set(value, key);
|
|
607
|
+
value !== null && typeof value === "object" && registry.set(value, key);
|
|
608
608
|
return `_$HY.set("${key}", ${devalue(value)});`;
|
|
609
609
|
}
|
|
610
610
|
function pipeToNodeWritable(code, writable, options = {}) {
|
package/web/dist/web.cjs
CHANGED
|
@@ -59,7 +59,7 @@ function reconcileArrays(parentNode, a, b) {
|
|
|
59
59
|
while (bStart < bEnd) parentNode.insertBefore(b[bStart++], node);
|
|
60
60
|
} else if (bEnd === bStart) {
|
|
61
61
|
while (aStart < aEnd) {
|
|
62
|
-
if (!map || !map.has(a[aStart]))
|
|
62
|
+
if (!map || !map.has(a[aStart])) a[aStart].remove();
|
|
63
63
|
aStart++;
|
|
64
64
|
}
|
|
65
65
|
} else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) {
|
|
@@ -88,7 +88,7 @@ function reconcileArrays(parentNode, a, b) {
|
|
|
88
88
|
while (bStart < index) parentNode.insertBefore(b[bStart++], node);
|
|
89
89
|
} else parentNode.replaceChild(b[bStart++], a[aStart++]);
|
|
90
90
|
} else aStart++;
|
|
91
|
-
} else
|
|
91
|
+
} else a[aStart++].remove();
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
94
|
}
|
|
@@ -346,6 +346,7 @@ function spreadExpression(node, props, prevProps = {}, isSVG, skipChildren) {
|
|
|
346
346
|
return prevProps;
|
|
347
347
|
}
|
|
348
348
|
function insertExpression(parent, value, current, marker, unwrapArray) {
|
|
349
|
+
if (solidJs.sharedConfig.context && !current) current = [...parent.childNodes];
|
|
349
350
|
while (typeof current === "function") current = current();
|
|
350
351
|
if (value === current) return current;
|
|
351
352
|
const t = typeof value,
|
|
@@ -448,10 +449,10 @@ function cleanChildren(parent, current, marker, replacement) {
|
|
|
448
449
|
const el = current[i];
|
|
449
450
|
if (node !== el) {
|
|
450
451
|
const isParent = el.parentNode === parent;
|
|
451
|
-
if (!inserted && !i) isParent ? parent.replaceChild(node, el) : parent.insertBefore(node, marker);else isParent &&
|
|
452
|
+
if (!inserted && !i) isParent ? parent.replaceChild(node, el) : parent.insertBefore(node, marker);else isParent && el.remove();
|
|
452
453
|
} else inserted = true;
|
|
453
454
|
}
|
|
454
|
-
} else parent.insertBefore(node, marker);
|
|
455
|
+
} else if (current instanceof Node) parent.replaceChild(node, current);else parent.insertBefore(node, marker);
|
|
455
456
|
return [node];
|
|
456
457
|
}
|
|
457
458
|
function gatherHydratable(element, root) {
|
package/web/dist/web.js
CHANGED
|
@@ -56,7 +56,7 @@ function reconcileArrays(parentNode, a, b) {
|
|
|
56
56
|
while (bStart < bEnd) parentNode.insertBefore(b[bStart++], node);
|
|
57
57
|
} else if (bEnd === bStart) {
|
|
58
58
|
while (aStart < aEnd) {
|
|
59
|
-
if (!map || !map.has(a[aStart]))
|
|
59
|
+
if (!map || !map.has(a[aStart])) a[aStart].remove();
|
|
60
60
|
aStart++;
|
|
61
61
|
}
|
|
62
62
|
} else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) {
|
|
@@ -85,7 +85,7 @@ function reconcileArrays(parentNode, a, b) {
|
|
|
85
85
|
while (bStart < index) parentNode.insertBefore(b[bStart++], node);
|
|
86
86
|
} else parentNode.replaceChild(b[bStart++], a[aStart++]);
|
|
87
87
|
} else aStart++;
|
|
88
|
-
} else
|
|
88
|
+
} else a[aStart++].remove();
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
91
|
}
|
|
@@ -343,6 +343,7 @@ function spreadExpression(node, props, prevProps = {}, isSVG, skipChildren) {
|
|
|
343
343
|
return prevProps;
|
|
344
344
|
}
|
|
345
345
|
function insertExpression(parent, value, current, marker, unwrapArray) {
|
|
346
|
+
if (sharedConfig.context && !current) current = [...parent.childNodes];
|
|
346
347
|
while (typeof current === "function") current = current();
|
|
347
348
|
if (value === current) return current;
|
|
348
349
|
const t = typeof value,
|
|
@@ -445,10 +446,10 @@ function cleanChildren(parent, current, marker, replacement) {
|
|
|
445
446
|
const el = current[i];
|
|
446
447
|
if (node !== el) {
|
|
447
448
|
const isParent = el.parentNode === parent;
|
|
448
|
-
if (!inserted && !i) isParent ? parent.replaceChild(node, el) : parent.insertBefore(node, marker);else isParent &&
|
|
449
|
+
if (!inserted && !i) isParent ? parent.replaceChild(node, el) : parent.insertBefore(node, marker);else isParent && el.remove();
|
|
449
450
|
} else inserted = true;
|
|
450
451
|
}
|
|
451
|
-
} else parent.insertBefore(node, marker);
|
|
452
|
+
} else if (current instanceof Node) parent.replaceChild(node, current);else parent.insertBefore(node, marker);
|
|
452
453
|
return [node];
|
|
453
454
|
}
|
|
454
455
|
function gatherHydratable(element, root) {
|
package/web/types/client.d.ts
CHANGED
|
@@ -53,7 +53,7 @@ export function dynamicProperty(props: unknown, key: string): unknown;
|
|
|
53
53
|
export function hydrate(
|
|
54
54
|
fn: () => JSX.Element,
|
|
55
55
|
node: MountableElement,
|
|
56
|
-
options
|
|
56
|
+
options?: { renderId?: string }
|
|
57
57
|
): () => void;
|
|
58
58
|
export function getHydrationKey(): string;
|
|
59
59
|
export function getNextElement(template?: HTMLTemplateElement): Element;
|