solid-js 1.3.0-beta.8 → 1.3.0-rc.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 +68 -47
- package/dist/dev.js +68 -48
- package/dist/server.cjs +14 -12
- package/dist/server.js +14 -13
- package/dist/solid.cjs +68 -47
- package/dist/solid.js +68 -48
- package/package.json +2 -2
- package/types/index.d.ts +2 -2
- package/types/reactive/signal.d.ts +22 -6
- package/types/server/index.d.ts +1 -1
- package/types/server/rendering.d.ts +2 -1
- package/web/dist/dev.cjs +1 -1
- package/web/dist/dev.js +1 -1
- package/web/dist/server.cjs +19 -19
- package/web/dist/server.js +19 -19
- package/web/dist/web.cjs +1 -1
- package/web/dist/web.js +1 -1
- package/web/types/server-mock.d.ts +0 -3
package/dist/solid.cjs
CHANGED
|
@@ -233,8 +233,14 @@ function createResource(source, fetcher, options) {
|
|
|
233
233
|
fetcher = source;
|
|
234
234
|
source = true;
|
|
235
235
|
}
|
|
236
|
+
options ||= {};
|
|
237
|
+
if (options.globalRefetch !== false) {
|
|
238
|
+
Resources || (Resources = new Set());
|
|
239
|
+
Resources.add(load);
|
|
240
|
+
onCleanup(() => Resources.delete(load));
|
|
241
|
+
}
|
|
236
242
|
const contexts = new Set(),
|
|
237
|
-
[s, set] = createSignal(
|
|
243
|
+
[s, set] = createSignal(options.initialValue),
|
|
238
244
|
[track, trigger] = createSignal(undefined, {
|
|
239
245
|
equals: false
|
|
240
246
|
}),
|
|
@@ -248,14 +254,16 @@ function createResource(source, fetcher, options) {
|
|
|
248
254
|
dynamic = typeof source === "function";
|
|
249
255
|
if (sharedConfig.context) {
|
|
250
256
|
id = `${sharedConfig.context.id}${sharedConfig.context.count++}`;
|
|
251
|
-
({ ...sharedConfig.context
|
|
252
|
-
});
|
|
253
257
|
if (sharedConfig.load) initP = sharedConfig.load(id);
|
|
254
258
|
}
|
|
255
|
-
function loadEnd(p, v, e) {
|
|
259
|
+
function loadEnd(p, v, e, key) {
|
|
256
260
|
if (pr === p) {
|
|
257
|
-
setError(err = e);
|
|
258
261
|
pr = null;
|
|
262
|
+
if (initP && p === initP && options.onHydrated) options.onHydrated(key, {
|
|
263
|
+
value: v
|
|
264
|
+
});
|
|
265
|
+
initP = null;
|
|
266
|
+
setError(err = e);
|
|
259
267
|
if (Transition && p && loadedUnderTransition) {
|
|
260
268
|
Transition.promises.delete(p);
|
|
261
269
|
loadedUnderTransition = false;
|
|
@@ -296,7 +304,7 @@ function createResource(source, fetcher, options) {
|
|
|
296
304
|
}
|
|
297
305
|
return v;
|
|
298
306
|
}
|
|
299
|
-
function load() {
|
|
307
|
+
function load(refetching = true) {
|
|
300
308
|
setError(err = undefined);
|
|
301
309
|
const lookup = dynamic ? source() : source;
|
|
302
310
|
loadedUnderTransition = Transition && Transition.running;
|
|
@@ -305,18 +313,20 @@ function createResource(source, fetcher, options) {
|
|
|
305
313
|
return;
|
|
306
314
|
}
|
|
307
315
|
if (Transition && pr) Transition.promises.delete(pr);
|
|
308
|
-
const p = initP || untrack(() => fetcher(lookup,
|
|
309
|
-
|
|
316
|
+
const p = initP || untrack(() => fetcher(lookup, {
|
|
317
|
+
value: s(),
|
|
318
|
+
refetching
|
|
319
|
+
}));
|
|
310
320
|
if (typeof p !== "object" || !("then" in p)) {
|
|
311
321
|
loadEnd(pr, p);
|
|
312
|
-
return;
|
|
322
|
+
return p;
|
|
313
323
|
}
|
|
314
324
|
pr = p;
|
|
315
325
|
batch(() => {
|
|
316
326
|
setLoading(true);
|
|
317
327
|
trigger();
|
|
318
328
|
});
|
|
319
|
-
p.then(v => loadEnd(p, v), e => loadEnd(p, e, e));
|
|
329
|
+
return p.then(v => loadEnd(p, v, undefined, lookup), e => loadEnd(p, e, e));
|
|
320
330
|
}
|
|
321
331
|
Object.defineProperties(read, {
|
|
322
332
|
loading: {
|
|
@@ -330,12 +340,16 @@ function createResource(source, fetcher, options) {
|
|
|
330
340
|
}
|
|
331
341
|
}
|
|
332
342
|
});
|
|
333
|
-
if (dynamic) createComputed(load);else load();
|
|
343
|
+
if (dynamic) createComputed(() => load(false));else load(false);
|
|
334
344
|
return [read, {
|
|
335
345
|
refetch: load,
|
|
336
346
|
mutate: set
|
|
337
347
|
}];
|
|
338
348
|
}
|
|
349
|
+
let Resources;
|
|
350
|
+
function refetchResources(info) {
|
|
351
|
+
Resources && Resources.forEach(fn => fn(info));
|
|
352
|
+
}
|
|
339
353
|
function createDeferred(source, options) {
|
|
340
354
|
let t,
|
|
341
355
|
timeout = options ? options.timeoutMs : undefined;
|
|
@@ -456,28 +470,27 @@ function runWithOwner(o, fn) {
|
|
|
456
470
|
function enableScheduling(scheduler = requestCallback) {
|
|
457
471
|
Scheduler = scheduler;
|
|
458
472
|
}
|
|
459
|
-
function startTransition(fn
|
|
473
|
+
function startTransition(fn) {
|
|
460
474
|
if (Transition && Transition.running) {
|
|
461
475
|
fn();
|
|
462
|
-
|
|
463
|
-
return;
|
|
476
|
+
return Transition.done;
|
|
464
477
|
}
|
|
465
|
-
|
|
478
|
+
return Promise.resolve().then(() => {
|
|
479
|
+
let t;
|
|
466
480
|
if (Scheduler || SuspenseContext) {
|
|
467
|
-
Transition || (Transition = {
|
|
481
|
+
t = Transition || (Transition = {
|
|
468
482
|
sources: new Set(),
|
|
469
483
|
effects: [],
|
|
470
484
|
promises: new Set(),
|
|
471
485
|
disposed: new Set(),
|
|
472
486
|
queue: new Set(),
|
|
473
|
-
running: true
|
|
474
|
-
cb: []
|
|
487
|
+
running: true
|
|
475
488
|
});
|
|
476
|
-
|
|
477
|
-
|
|
489
|
+
t.done ||= new Promise(res => t.resolve = res);
|
|
490
|
+
t.running = true;
|
|
478
491
|
}
|
|
479
492
|
batch(fn);
|
|
480
|
-
|
|
493
|
+
return t ? t.done : undefined;
|
|
481
494
|
});
|
|
482
495
|
}
|
|
483
496
|
function useTransition() {
|
|
@@ -657,7 +670,7 @@ function createComputation(fn, init, pure, state = STALE, options) {
|
|
|
657
670
|
});
|
|
658
671
|
const ordinary = ExternalSourceFactory(c.fn, trigger);
|
|
659
672
|
onCleanup(() => ordinary.dispose());
|
|
660
|
-
const triggerInTransition = () => startTransition(trigger
|
|
673
|
+
const triggerInTransition = () => startTransition(trigger).then(() => inTransition.dispose());
|
|
661
674
|
const inTransition = ExternalSourceFactory(c.fn, triggerInTransition);
|
|
662
675
|
c.fn = x => {
|
|
663
676
|
track();
|
|
@@ -715,7 +728,7 @@ function completeUpdates(wait) {
|
|
|
715
728
|
Updates = null;
|
|
716
729
|
}
|
|
717
730
|
if (wait) return;
|
|
718
|
-
let
|
|
731
|
+
let res;
|
|
719
732
|
if (Transition && Transition.running) {
|
|
720
733
|
if (Transition.promises.size || Transition.queue.size) {
|
|
721
734
|
Transition.running = false;
|
|
@@ -725,7 +738,7 @@ function completeUpdates(wait) {
|
|
|
725
738
|
return;
|
|
726
739
|
}
|
|
727
740
|
const sources = Transition.sources;
|
|
728
|
-
|
|
741
|
+
res = Transition.resolve;
|
|
729
742
|
Effects.forEach(e => {
|
|
730
743
|
"tState" in e && (e.state = e.tState);
|
|
731
744
|
delete e.tState;
|
|
@@ -751,7 +764,7 @@ function completeUpdates(wait) {
|
|
|
751
764
|
});else {
|
|
752
765
|
Effects = null;
|
|
753
766
|
}
|
|
754
|
-
if (
|
|
767
|
+
if (res) res();
|
|
755
768
|
}
|
|
756
769
|
function runQueue(queue) {
|
|
757
770
|
for (let i = 0; i < queue.length; i++) runTop(queue[i]);
|
|
@@ -1211,7 +1224,9 @@ function lazy(fn) {
|
|
|
1211
1224
|
});
|
|
1212
1225
|
comp = s;
|
|
1213
1226
|
} else if (!comp) {
|
|
1214
|
-
const [s] = createResource(() => (p || (p = fn())).then(mod => mod.default)
|
|
1227
|
+
const [s] = createResource(() => (p || (p = fn())).then(mod => mod.default), {
|
|
1228
|
+
globalRefetch: false
|
|
1229
|
+
});
|
|
1215
1230
|
comp = s;
|
|
1216
1231
|
} else {
|
|
1217
1232
|
const c = comp();
|
|
@@ -1374,7 +1389,7 @@ function Suspense(props) {
|
|
|
1374
1389
|
showContent,
|
|
1375
1390
|
showFallback,
|
|
1376
1391
|
ctx,
|
|
1377
|
-
|
|
1392
|
+
p,
|
|
1378
1393
|
flicker,
|
|
1379
1394
|
error;
|
|
1380
1395
|
const [inFallback, setFallback] = createSignal(false),
|
|
@@ -1393,21 +1408,22 @@ function Suspense(props) {
|
|
|
1393
1408
|
owner = getOwner();
|
|
1394
1409
|
if (sharedConfig.context) {
|
|
1395
1410
|
const key = sharedConfig.context.id + sharedConfig.context.count;
|
|
1396
|
-
|
|
1411
|
+
p = sharedConfig.load(key);
|
|
1397
1412
|
if (p) {
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
|
|
1413
|
+
if (typeof p !== "object" || !("then" in p)) error = p;else {
|
|
1414
|
+
const [s, set] = createSignal(undefined, {
|
|
1415
|
+
equals: false
|
|
1416
|
+
});
|
|
1417
|
+
flicker = s;
|
|
1418
|
+
p.then(err => {
|
|
1419
|
+
if (error = err) return set();
|
|
1420
|
+
sharedConfig.gather(key);
|
|
1421
|
+
setHydrateContext(ctx);
|
|
1422
|
+
set();
|
|
1423
|
+
setHydrateContext();
|
|
1424
|
+
p = undefined;
|
|
1425
|
+
});
|
|
1426
|
+
}
|
|
1411
1427
|
}
|
|
1412
1428
|
}
|
|
1413
1429
|
const listContext = useContext(SuspenseListContext);
|
|
@@ -1419,18 +1435,19 @@ function Suspense(props) {
|
|
|
1419
1435
|
get children() {
|
|
1420
1436
|
return createMemo(() => {
|
|
1421
1437
|
if (error) throw error;
|
|
1438
|
+
ctx = sharedConfig.context;
|
|
1422
1439
|
if (flicker) {
|
|
1423
|
-
ctx = sharedConfig.context;
|
|
1424
1440
|
flicker();
|
|
1425
1441
|
return flicker = undefined;
|
|
1426
1442
|
}
|
|
1443
|
+
if (ctx && p === undefined) setHydrateContext();
|
|
1427
1444
|
const rendered = untrack(() => props.children);
|
|
1428
1445
|
return createMemo(() => {
|
|
1429
1446
|
const inFallback = store.inFallback(),
|
|
1430
1447
|
visibleContent = showContent ? showContent() : true,
|
|
1431
1448
|
visibleFallback = showFallback ? showFallback() : true;
|
|
1432
1449
|
dispose && dispose();
|
|
1433
|
-
if ((!inFallback ||
|
|
1450
|
+
if ((!inFallback || p !== undefined) && visibleContent) {
|
|
1434
1451
|
store.resolved = true;
|
|
1435
1452
|
resumeEffects(store.effects);
|
|
1436
1453
|
return rendered;
|
|
@@ -1438,10 +1455,13 @@ function Suspense(props) {
|
|
|
1438
1455
|
if (!visibleFallback) return;
|
|
1439
1456
|
return createRoot(disposer => {
|
|
1440
1457
|
dispose = disposer;
|
|
1441
|
-
if (
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1458
|
+
if (ctx) {
|
|
1459
|
+
setHydrateContext({
|
|
1460
|
+
id: ctx.id + "f",
|
|
1461
|
+
count: 0
|
|
1462
|
+
});
|
|
1463
|
+
ctx = undefined;
|
|
1464
|
+
}
|
|
1445
1465
|
return props.fallback;
|
|
1446
1466
|
}, owner);
|
|
1447
1467
|
});
|
|
@@ -1493,6 +1513,7 @@ exports.on = on;
|
|
|
1493
1513
|
exports.onCleanup = onCleanup;
|
|
1494
1514
|
exports.onError = onError;
|
|
1495
1515
|
exports.onMount = onMount;
|
|
1516
|
+
exports.refetchResources = refetchResources;
|
|
1496
1517
|
exports.requestCallback = requestCallback;
|
|
1497
1518
|
exports.runWithOwner = runWithOwner;
|
|
1498
1519
|
exports.sharedConfig = sharedConfig;
|
package/dist/solid.js
CHANGED
|
@@ -229,8 +229,14 @@ function createResource(source, fetcher, options) {
|
|
|
229
229
|
fetcher = source;
|
|
230
230
|
source = true;
|
|
231
231
|
}
|
|
232
|
+
options ||= {};
|
|
233
|
+
if (options.globalRefetch !== false) {
|
|
234
|
+
Resources || (Resources = new Set());
|
|
235
|
+
Resources.add(load);
|
|
236
|
+
onCleanup(() => Resources.delete(load));
|
|
237
|
+
}
|
|
232
238
|
const contexts = new Set(),
|
|
233
|
-
[s, set] = createSignal(
|
|
239
|
+
[s, set] = createSignal(options.initialValue),
|
|
234
240
|
[track, trigger] = createSignal(undefined, {
|
|
235
241
|
equals: false
|
|
236
242
|
}),
|
|
@@ -244,14 +250,16 @@ function createResource(source, fetcher, options) {
|
|
|
244
250
|
dynamic = typeof source === "function";
|
|
245
251
|
if (sharedConfig.context) {
|
|
246
252
|
id = `${sharedConfig.context.id}${sharedConfig.context.count++}`;
|
|
247
|
-
({ ...sharedConfig.context
|
|
248
|
-
});
|
|
249
253
|
if (sharedConfig.load) initP = sharedConfig.load(id);
|
|
250
254
|
}
|
|
251
|
-
function loadEnd(p, v, e) {
|
|
255
|
+
function loadEnd(p, v, e, key) {
|
|
252
256
|
if (pr === p) {
|
|
253
|
-
setError(err = e);
|
|
254
257
|
pr = null;
|
|
258
|
+
if (initP && p === initP && options.onHydrated) options.onHydrated(key, {
|
|
259
|
+
value: v
|
|
260
|
+
});
|
|
261
|
+
initP = null;
|
|
262
|
+
setError(err = e);
|
|
255
263
|
if (Transition && p && loadedUnderTransition) {
|
|
256
264
|
Transition.promises.delete(p);
|
|
257
265
|
loadedUnderTransition = false;
|
|
@@ -292,7 +300,7 @@ function createResource(source, fetcher, options) {
|
|
|
292
300
|
}
|
|
293
301
|
return v;
|
|
294
302
|
}
|
|
295
|
-
function load() {
|
|
303
|
+
function load(refetching = true) {
|
|
296
304
|
setError(err = undefined);
|
|
297
305
|
const lookup = dynamic ? source() : source;
|
|
298
306
|
loadedUnderTransition = Transition && Transition.running;
|
|
@@ -301,18 +309,20 @@ function createResource(source, fetcher, options) {
|
|
|
301
309
|
return;
|
|
302
310
|
}
|
|
303
311
|
if (Transition && pr) Transition.promises.delete(pr);
|
|
304
|
-
const p = initP || untrack(() => fetcher(lookup,
|
|
305
|
-
|
|
312
|
+
const p = initP || untrack(() => fetcher(lookup, {
|
|
313
|
+
value: s(),
|
|
314
|
+
refetching
|
|
315
|
+
}));
|
|
306
316
|
if (typeof p !== "object" || !("then" in p)) {
|
|
307
317
|
loadEnd(pr, p);
|
|
308
|
-
return;
|
|
318
|
+
return p;
|
|
309
319
|
}
|
|
310
320
|
pr = p;
|
|
311
321
|
batch(() => {
|
|
312
322
|
setLoading(true);
|
|
313
323
|
trigger();
|
|
314
324
|
});
|
|
315
|
-
p.then(v => loadEnd(p, v), e => loadEnd(p, e, e));
|
|
325
|
+
return p.then(v => loadEnd(p, v, undefined, lookup), e => loadEnd(p, e, e));
|
|
316
326
|
}
|
|
317
327
|
Object.defineProperties(read, {
|
|
318
328
|
loading: {
|
|
@@ -326,12 +336,16 @@ function createResource(source, fetcher, options) {
|
|
|
326
336
|
}
|
|
327
337
|
}
|
|
328
338
|
});
|
|
329
|
-
if (dynamic) createComputed(load);else load();
|
|
339
|
+
if (dynamic) createComputed(() => load(false));else load(false);
|
|
330
340
|
return [read, {
|
|
331
341
|
refetch: load,
|
|
332
342
|
mutate: set
|
|
333
343
|
}];
|
|
334
344
|
}
|
|
345
|
+
let Resources;
|
|
346
|
+
function refetchResources(info) {
|
|
347
|
+
Resources && Resources.forEach(fn => fn(info));
|
|
348
|
+
}
|
|
335
349
|
function createDeferred(source, options) {
|
|
336
350
|
let t,
|
|
337
351
|
timeout = options ? options.timeoutMs : undefined;
|
|
@@ -452,28 +466,27 @@ function runWithOwner(o, fn) {
|
|
|
452
466
|
function enableScheduling(scheduler = requestCallback) {
|
|
453
467
|
Scheduler = scheduler;
|
|
454
468
|
}
|
|
455
|
-
function startTransition(fn
|
|
469
|
+
function startTransition(fn) {
|
|
456
470
|
if (Transition && Transition.running) {
|
|
457
471
|
fn();
|
|
458
|
-
|
|
459
|
-
return;
|
|
472
|
+
return Transition.done;
|
|
460
473
|
}
|
|
461
|
-
|
|
474
|
+
return Promise.resolve().then(() => {
|
|
475
|
+
let t;
|
|
462
476
|
if (Scheduler || SuspenseContext) {
|
|
463
|
-
Transition || (Transition = {
|
|
477
|
+
t = Transition || (Transition = {
|
|
464
478
|
sources: new Set(),
|
|
465
479
|
effects: [],
|
|
466
480
|
promises: new Set(),
|
|
467
481
|
disposed: new Set(),
|
|
468
482
|
queue: new Set(),
|
|
469
|
-
running: true
|
|
470
|
-
cb: []
|
|
483
|
+
running: true
|
|
471
484
|
});
|
|
472
|
-
|
|
473
|
-
|
|
485
|
+
t.done ||= new Promise(res => t.resolve = res);
|
|
486
|
+
t.running = true;
|
|
474
487
|
}
|
|
475
488
|
batch(fn);
|
|
476
|
-
|
|
489
|
+
return t ? t.done : undefined;
|
|
477
490
|
});
|
|
478
491
|
}
|
|
479
492
|
function useTransition() {
|
|
@@ -653,7 +666,7 @@ function createComputation(fn, init, pure, state = STALE, options) {
|
|
|
653
666
|
});
|
|
654
667
|
const ordinary = ExternalSourceFactory(c.fn, trigger);
|
|
655
668
|
onCleanup(() => ordinary.dispose());
|
|
656
|
-
const triggerInTransition = () => startTransition(trigger
|
|
669
|
+
const triggerInTransition = () => startTransition(trigger).then(() => inTransition.dispose());
|
|
657
670
|
const inTransition = ExternalSourceFactory(c.fn, triggerInTransition);
|
|
658
671
|
c.fn = x => {
|
|
659
672
|
track();
|
|
@@ -711,7 +724,7 @@ function completeUpdates(wait) {
|
|
|
711
724
|
Updates = null;
|
|
712
725
|
}
|
|
713
726
|
if (wait) return;
|
|
714
|
-
let
|
|
727
|
+
let res;
|
|
715
728
|
if (Transition && Transition.running) {
|
|
716
729
|
if (Transition.promises.size || Transition.queue.size) {
|
|
717
730
|
Transition.running = false;
|
|
@@ -721,7 +734,7 @@ function completeUpdates(wait) {
|
|
|
721
734
|
return;
|
|
722
735
|
}
|
|
723
736
|
const sources = Transition.sources;
|
|
724
|
-
|
|
737
|
+
res = Transition.resolve;
|
|
725
738
|
Effects.forEach(e => {
|
|
726
739
|
"tState" in e && (e.state = e.tState);
|
|
727
740
|
delete e.tState;
|
|
@@ -747,7 +760,7 @@ function completeUpdates(wait) {
|
|
|
747
760
|
});else {
|
|
748
761
|
Effects = null;
|
|
749
762
|
}
|
|
750
|
-
if (
|
|
763
|
+
if (res) res();
|
|
751
764
|
}
|
|
752
765
|
function runQueue(queue) {
|
|
753
766
|
for (let i = 0; i < queue.length; i++) runTop(queue[i]);
|
|
@@ -1207,7 +1220,9 @@ function lazy(fn) {
|
|
|
1207
1220
|
});
|
|
1208
1221
|
comp = s;
|
|
1209
1222
|
} else if (!comp) {
|
|
1210
|
-
const [s] = createResource(() => (p || (p = fn())).then(mod => mod.default)
|
|
1223
|
+
const [s] = createResource(() => (p || (p = fn())).then(mod => mod.default), {
|
|
1224
|
+
globalRefetch: false
|
|
1225
|
+
});
|
|
1211
1226
|
comp = s;
|
|
1212
1227
|
} else {
|
|
1213
1228
|
const c = comp();
|
|
@@ -1370,7 +1385,7 @@ function Suspense(props) {
|
|
|
1370
1385
|
showContent,
|
|
1371
1386
|
showFallback,
|
|
1372
1387
|
ctx,
|
|
1373
|
-
|
|
1388
|
+
p,
|
|
1374
1389
|
flicker,
|
|
1375
1390
|
error;
|
|
1376
1391
|
const [inFallback, setFallback] = createSignal(false),
|
|
@@ -1389,21 +1404,22 @@ function Suspense(props) {
|
|
|
1389
1404
|
owner = getOwner();
|
|
1390
1405
|
if (sharedConfig.context) {
|
|
1391
1406
|
const key = sharedConfig.context.id + sharedConfig.context.count;
|
|
1392
|
-
|
|
1407
|
+
p = sharedConfig.load(key);
|
|
1393
1408
|
if (p) {
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1406
|
-
|
|
1409
|
+
if (typeof p !== "object" || !("then" in p)) error = p;else {
|
|
1410
|
+
const [s, set] = createSignal(undefined, {
|
|
1411
|
+
equals: false
|
|
1412
|
+
});
|
|
1413
|
+
flicker = s;
|
|
1414
|
+
p.then(err => {
|
|
1415
|
+
if (error = err) return set();
|
|
1416
|
+
sharedConfig.gather(key);
|
|
1417
|
+
setHydrateContext(ctx);
|
|
1418
|
+
set();
|
|
1419
|
+
setHydrateContext();
|
|
1420
|
+
p = undefined;
|
|
1421
|
+
});
|
|
1422
|
+
}
|
|
1407
1423
|
}
|
|
1408
1424
|
}
|
|
1409
1425
|
const listContext = useContext(SuspenseListContext);
|
|
@@ -1415,18 +1431,19 @@ function Suspense(props) {
|
|
|
1415
1431
|
get children() {
|
|
1416
1432
|
return createMemo(() => {
|
|
1417
1433
|
if (error) throw error;
|
|
1434
|
+
ctx = sharedConfig.context;
|
|
1418
1435
|
if (flicker) {
|
|
1419
|
-
ctx = sharedConfig.context;
|
|
1420
1436
|
flicker();
|
|
1421
1437
|
return flicker = undefined;
|
|
1422
1438
|
}
|
|
1439
|
+
if (ctx && p === undefined) setHydrateContext();
|
|
1423
1440
|
const rendered = untrack(() => props.children);
|
|
1424
1441
|
return createMemo(() => {
|
|
1425
1442
|
const inFallback = store.inFallback(),
|
|
1426
1443
|
visibleContent = showContent ? showContent() : true,
|
|
1427
1444
|
visibleFallback = showFallback ? showFallback() : true;
|
|
1428
1445
|
dispose && dispose();
|
|
1429
|
-
if ((!inFallback ||
|
|
1446
|
+
if ((!inFallback || p !== undefined) && visibleContent) {
|
|
1430
1447
|
store.resolved = true;
|
|
1431
1448
|
resumeEffects(store.effects);
|
|
1432
1449
|
return rendered;
|
|
@@ -1434,10 +1451,13 @@ function Suspense(props) {
|
|
|
1434
1451
|
if (!visibleFallback) return;
|
|
1435
1452
|
return createRoot(disposer => {
|
|
1436
1453
|
dispose = disposer;
|
|
1437
|
-
if (
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1454
|
+
if (ctx) {
|
|
1455
|
+
setHydrateContext({
|
|
1456
|
+
id: ctx.id + "f",
|
|
1457
|
+
count: 0
|
|
1458
|
+
});
|
|
1459
|
+
ctx = undefined;
|
|
1460
|
+
}
|
|
1441
1461
|
return props.fallback;
|
|
1442
1462
|
}, owner);
|
|
1443
1463
|
});
|
|
@@ -1448,4 +1468,4 @@ function Suspense(props) {
|
|
|
1448
1468
|
|
|
1449
1469
|
let DEV;
|
|
1450
1470
|
|
|
1451
|
-
export { $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, requestCallback, runWithOwner, sharedConfig, splitProps, startTransition, untrack, useContext, useTransition };
|
|
1471
|
+
export { $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 };
|
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.0-
|
|
4
|
+
"version": "1.3.0-rc.2",
|
|
5
5
|
"author": "Ryan Carniato",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"homepage": "https://solidjs.com",
|
|
@@ -144,5 +144,5 @@
|
|
|
144
144
|
"compiler",
|
|
145
145
|
"performance"
|
|
146
146
|
],
|
|
147
|
-
"gitHead": "
|
|
147
|
+
"gitHead": "755131b48e080980ee093f087ecd91945aeb3d31"
|
|
148
148
|
}
|
package/types/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { createRoot, createSignal, createEffect, createRenderEffect, createComputed, createDeferred, createSelector, createMemo, createResource, onMount, onCleanup, onError, untrack, batch, on, enableScheduling, enableExternalSource, startTransition, useTransition, createContext, useContext, children, getListener, getOwner, runWithOwner, equalFn, $PROXY } from "./reactive/signal";
|
|
2
|
-
export type { Accessor, Setter, Resource, ResourceReturn, Context, ReturnTypes } from "./reactive/signal";
|
|
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, $PROXY } from "./reactive/signal";
|
|
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";
|
|
5
5
|
export * from "./reactive/array";
|
|
@@ -49,7 +49,8 @@ export interface TransitionState {
|
|
|
49
49
|
queue: Set<Computation<any>>;
|
|
50
50
|
scheduler?: (fn: () => void) => unknown;
|
|
51
51
|
running: boolean;
|
|
52
|
-
|
|
52
|
+
done?: Promise<void>;
|
|
53
|
+
resolve?: () => void;
|
|
53
54
|
}
|
|
54
55
|
declare type ExternalSourceFactory = <Prev, Next extends Prev = Prev>(fn: EffectFunction<Prev, Next>, trigger: () => void) => ExternalSource;
|
|
55
56
|
export interface ExternalSource {
|
|
@@ -185,17 +186,25 @@ export interface Resource<T> extends Accessor<T> {
|
|
|
185
186
|
}
|
|
186
187
|
export declare type ResourceActions<T> = {
|
|
187
188
|
mutate: Setter<T>;
|
|
188
|
-
refetch: () => void;
|
|
189
|
+
refetch: (info?: unknown) => void;
|
|
189
190
|
};
|
|
190
191
|
export declare type ResourceReturn<T> = [Resource<T>, ResourceActions<T>];
|
|
191
192
|
export declare type ResourceSource<S> = S | false | null | (() => S | false | null);
|
|
192
|
-
export declare type ResourceFetcher<S, T> = (k: S,
|
|
193
|
+
export declare type ResourceFetcher<S, T> = (k: S, info: ResourceFetcherInfo<T>) => T | Promise<T>;
|
|
194
|
+
export declare type ResourceFetcherInfo<T> = {
|
|
195
|
+
value: T | undefined;
|
|
196
|
+
refetching?: unknown;
|
|
197
|
+
};
|
|
193
198
|
export declare type ResourceOptions<T> = T extends undefined ? {
|
|
194
199
|
initialValue?: T;
|
|
195
200
|
name?: string;
|
|
201
|
+
globalRefetch?: boolean;
|
|
202
|
+
onHydrated?: <S, T>(k: S, info: ResourceFetcherInfo<T>) => void;
|
|
196
203
|
} : {
|
|
197
204
|
initialValue: T;
|
|
198
205
|
name?: string;
|
|
206
|
+
globalRefetch?: boolean;
|
|
207
|
+
onHydrated?: <S, T>(k: S, info: ResourceFetcherInfo<T>) => void;
|
|
199
208
|
};
|
|
200
209
|
/**
|
|
201
210
|
* Creates a resource that wraps a repeated promise in a reactive pattern:
|
|
@@ -207,7 +216,7 @@ export declare type ResourceOptions<T> = T extends undefined ? {
|
|
|
207
216
|
* ```typescript
|
|
208
217
|
* const fetcher: ResourceFetcher<S, T, > = (
|
|
209
218
|
* sourceOutput: ReturnValue<typeof source>,
|
|
210
|
-
*
|
|
219
|
+
* info: ResourceFetcherInfo<T>
|
|
211
220
|
* ) => T | Promise<T>;
|
|
212
221
|
* ```
|
|
213
222
|
* @param options - an optional object with the initialValue and the name (for debugging purposes)
|
|
@@ -226,6 +235,7 @@ export declare function createResource<T, S = true>(fetcher: ResourceFetcher<S,
|
|
|
226
235
|
export declare function createResource<T, S = true>(fetcher: ResourceFetcher<S, T>, options: ResourceOptions<T>): ResourceReturn<T>;
|
|
227
236
|
export declare function createResource<T, S>(source: ResourceSource<S>, fetcher: ResourceFetcher<S, T>, options?: ResourceOptions<undefined>): ResourceReturn<T | undefined>;
|
|
228
237
|
export declare function createResource<T, S>(source: ResourceSource<S>, fetcher: ResourceFetcher<S, T>, options: ResourceOptions<T>): ResourceReturn<T>;
|
|
238
|
+
export declare function refetchResources(info?: unknown): void;
|
|
229
239
|
export interface DeferredOptions<T> {
|
|
230
240
|
equals?: false | ((prev: T, next: T) => boolean);
|
|
231
241
|
name?: string;
|
|
@@ -348,8 +358,14 @@ export declare function getListener(): Computation<any, any> | null;
|
|
|
348
358
|
export declare function getOwner(): Owner | null;
|
|
349
359
|
export declare function runWithOwner(o: Owner, fn: () => any): any;
|
|
350
360
|
export declare function enableScheduling(scheduler?: typeof requestCallback): void;
|
|
351
|
-
|
|
352
|
-
|
|
361
|
+
/**
|
|
362
|
+
* ```typescript
|
|
363
|
+
* export function startTransition(fn: () => void) => Promise<void>
|
|
364
|
+
*
|
|
365
|
+
* @description https://www.solidjs.com/docs/latest/api#usetransition
|
|
366
|
+
*/
|
|
367
|
+
export declare function startTransition(fn: () => unknown): Promise<void>;
|
|
368
|
+
export declare type Transition = [Accessor<boolean>, (fn: () => void) => Promise<void>];
|
|
353
369
|
/**
|
|
354
370
|
* ```typescript
|
|
355
371
|
* export function useTransition(): [
|
package/types/server/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
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, DEV, enableExternalSource } from "./reactive";
|
|
2
|
-
export { mergeProps, splitProps, createComponent, For, Index, Show, Switch, Match, ErrorBoundary, Suspense, SuspenseList, createResource, enableScheduling, startTransition, useTransition, createUniqueId, lazy, sharedConfig } from "./rendering";
|
|
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";
|
|
@@ -82,10 +82,12 @@ export declare function createResource<T, U = true>(fetcher: (k: U, getPrev: ()
|
|
|
82
82
|
export declare function createResource<T, U>(fn: U | false | (() => U | false), fetcher: (k: U, getPrev: () => T | undefined) => T | Promise<T>, options?: {
|
|
83
83
|
initialValue?: T;
|
|
84
84
|
}): ResourceReturn<T>;
|
|
85
|
+
export declare function refetchResources(info?: unknown): void;
|
|
85
86
|
export declare function lazy(fn: () => Promise<{
|
|
86
87
|
default: any;
|
|
87
88
|
}>): (props: any) => string;
|
|
88
89
|
export declare function enableScheduling(): void;
|
|
90
|
+
export declare function enableHydration(): void;
|
|
89
91
|
export declare function startTransition(fn: () => any): void;
|
|
90
92
|
export declare function useTransition(): [() => boolean, (fn: () => any) => void];
|
|
91
93
|
declare type HydrationContext = {
|
|
@@ -97,7 +99,6 @@ declare type HydrationContext = {
|
|
|
97
99
|
registerFragment: (v: string) => (v?: string, err?: any) => boolean;
|
|
98
100
|
async?: boolean;
|
|
99
101
|
streaming?: boolean;
|
|
100
|
-
dataOnly?: boolean;
|
|
101
102
|
noHydrate: boolean;
|
|
102
103
|
};
|
|
103
104
|
export declare function SuspenseList(props: {
|
package/web/dist/dev.cjs
CHANGED
|
@@ -409,7 +409,7 @@ function insertExpression(parent, value, current, marker, unwrapArray) {
|
|
|
409
409
|
cleanChildren(parent, current, null, value);
|
|
410
410
|
} else if (current == null || current === "" || !parent.firstChild) {
|
|
411
411
|
parent.appendChild(value);
|
|
412
|
-
} else parent.replaceChild(value, parent.firstChild);
|
|
412
|
+
} else parent.replaceChild(value, multi ? current : parent.firstChild);
|
|
413
413
|
current = value;
|
|
414
414
|
} else console.warn(`Unrecognized value. Skipped inserting`, value);
|
|
415
415
|
return current;
|
package/web/dist/dev.js
CHANGED
|
@@ -406,7 +406,7 @@ function insertExpression(parent, value, current, marker, unwrapArray) {
|
|
|
406
406
|
cleanChildren(parent, current, null, value);
|
|
407
407
|
} else if (current == null || current === "" || !parent.firstChild) {
|
|
408
408
|
parent.appendChild(value);
|
|
409
|
-
} else parent.replaceChild(value, parent.firstChild);
|
|
409
|
+
} else parent.replaceChild(value, multi ? current : parent.firstChild);
|
|
410
410
|
current = value;
|
|
411
411
|
} else console.warn(`Unrecognized value. Skipped inserting`, value);
|
|
412
412
|
return current;
|