solid-js 1.4.8 → 1.5.0-beta.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 +119 -134
- package/dist/dev.js +119 -134
- package/dist/server.cjs +98 -49
- package/dist/server.js +98 -49
- package/dist/solid.cjs +119 -132
- package/dist/solid.js +119 -132
- package/h/jsx-runtime/types/jsx.d.ts +8 -1401
- package/h/types/hyperscript.d.ts +17 -0
- package/html/types/lit.d.ts +37 -0
- package/package.json +103 -41
- package/store/dist/dev.cjs +40 -22
- package/store/dist/dev.js +41 -23
- package/store/dist/store.cjs +40 -22
- package/store/dist/store.js +40 -22
- package/store/types/index.d.ts +4 -4
- package/store/types/mutable.d.ts +1 -1
- package/store/types/server.d.ts +1 -1
- package/store/types/store.d.ts +1 -1
- package/types/index.d.ts +8 -8
- package/types/jsx.d.ts +196 -1580
- package/types/reactive/array.d.ts +1 -1
- package/types/reactive/observable.d.ts +1 -1
- package/types/reactive/signal.d.ts +69 -34
- package/types/render/Suspense.d.ts +1 -1
- package/types/render/component.d.ts +22 -7
- package/types/render/flow.d.ts +2 -2
- package/types/render/index.d.ts +4 -4
- package/types/server/index.d.ts +3 -3
- package/types/server/reactive.d.ts +8 -3
- package/types/server/rendering.d.ts +11 -6
- package/universal/dist/dev.cjs +0 -0
- package/universal/dist/dev.js +0 -0
- package/universal/dist/universal.cjs +0 -0
- package/universal/dist/universal.js +0 -0
- package/universal/types/index.d.ts +1 -1
- package/web/dist/dev.cjs +3 -3
- package/web/dist/dev.js +3 -3
- package/web/dist/server.cjs +66 -90
- package/web/dist/server.js +66 -90
- package/web/dist/web.cjs +3 -3
- package/web/dist/web.js +3 -3
- package/web/types/client.d.ts +1 -1
- package/web/types/core.d.ts +3 -3
- package/web/types/index.d.ts +8 -9
- package/web/types/jsx.d.ts +1 -1
- package/web/types/server-mock.d.ts +4 -2
- package/web/types/server.d.ts +70 -0
- package/h/README.md +0 -99
- package/h/jsx-runtime/package.json +0 -8
- package/h/package.json +0 -8
- package/html/README.md +0 -84
- package/html/package.json +0 -8
- package/store/README.md +0 -23
- package/store/package.json +0 -35
- package/universal/README.md +0 -102
- package/universal/package.json +0 -18
- package/web/README.md +0 -7
- package/web/package.json +0 -35
package/dist/solid.cjs
CHANGED
|
@@ -138,7 +138,6 @@ const signalOptions = {
|
|
|
138
138
|
};
|
|
139
139
|
let ERROR = null;
|
|
140
140
|
let runEffects = runQueue;
|
|
141
|
-
const NOTPENDING = {};
|
|
142
141
|
const STALE = 1;
|
|
143
142
|
const PENDING = 2;
|
|
144
143
|
const UNOWNED = {
|
|
@@ -147,13 +146,13 @@ const UNOWNED = {
|
|
|
147
146
|
context: null,
|
|
148
147
|
owner: null
|
|
149
148
|
};
|
|
149
|
+
const NO_INIT = {};
|
|
150
150
|
const [transPending, setTransPending] = /*@__PURE__*/createSignal(false);
|
|
151
151
|
var Owner = null;
|
|
152
152
|
let Transition = null;
|
|
153
153
|
let Scheduler = null;
|
|
154
154
|
let ExternalSourceFactory = null;
|
|
155
155
|
let Listener = null;
|
|
156
|
-
let Pending = null;
|
|
157
156
|
let Updates = null;
|
|
158
157
|
let Effects = null;
|
|
159
158
|
let ExecCount = 0;
|
|
@@ -183,12 +182,11 @@ function createSignal(value, options) {
|
|
|
183
182
|
value,
|
|
184
183
|
observers: null,
|
|
185
184
|
observerSlots: null,
|
|
186
|
-
pending: NOTPENDING,
|
|
187
185
|
comparator: options.equals || undefined
|
|
188
186
|
};
|
|
189
187
|
const setter = value => {
|
|
190
188
|
if (typeof value === "function") {
|
|
191
|
-
if (Transition && Transition.running && Transition.sources.has(s)) value = value(s.
|
|
189
|
+
if (Transition && Transition.running && Transition.sources.has(s)) value = value(s.tValue);else value = value(s.value);
|
|
192
190
|
}
|
|
193
191
|
return writeSignal(s, value);
|
|
194
192
|
};
|
|
@@ -227,7 +225,6 @@ function createReaction(onInvalidate, options) {
|
|
|
227
225
|
function createMemo(fn, value, options) {
|
|
228
226
|
options = options ? Object.assign({}, signalOptions, options) : signalOptions;
|
|
229
227
|
const c = createComputation(fn, value, true, 0);
|
|
230
|
-
c.pending = NOTPENDING;
|
|
231
228
|
c.observers = null;
|
|
232
229
|
c.observerSlots = null;
|
|
233
230
|
c.comparator = options.equals || undefined;
|
|
@@ -237,46 +234,46 @@ function createMemo(fn, value, options) {
|
|
|
237
234
|
} else updateComputation(c);
|
|
238
235
|
return readSignal.bind(c);
|
|
239
236
|
}
|
|
240
|
-
function createResource(
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
source = true;
|
|
246
|
-
}
|
|
247
|
-
} else if (arguments.length === 1) {
|
|
248
|
-
fetcher = source;
|
|
237
|
+
function createResource(pSource, pFetcher, pOptions) {
|
|
238
|
+
let source;
|
|
239
|
+
let fetcher;
|
|
240
|
+
let options;
|
|
241
|
+
if (arguments.length === 2 && typeof pFetcher === "object" || arguments.length === 1) {
|
|
249
242
|
source = true;
|
|
243
|
+
fetcher = pSource;
|
|
244
|
+
options = pFetcher || {};
|
|
245
|
+
} else {
|
|
246
|
+
source = pSource;
|
|
247
|
+
fetcher = pFetcher;
|
|
248
|
+
options = pOptions || {};
|
|
250
249
|
}
|
|
251
|
-
options || (options = {});
|
|
252
|
-
const contexts = new Set(),
|
|
253
|
-
[value, setValue] = createSignal(options.initialValue),
|
|
254
|
-
[track, trigger] = createSignal(undefined, {
|
|
255
|
-
equals: false
|
|
256
|
-
}),
|
|
257
|
-
[loading, setLoading] = createSignal(false),
|
|
258
|
-
[error, setError] = createSignal();
|
|
259
250
|
let err = undefined,
|
|
260
251
|
pr = null,
|
|
261
|
-
initP =
|
|
252
|
+
initP = NO_INIT,
|
|
262
253
|
id = null,
|
|
263
254
|
loadedUnderTransition = false,
|
|
264
255
|
scheduled = false,
|
|
265
256
|
resolved = ("initialValue" in options),
|
|
266
257
|
dynamic = typeof source === "function" && createMemo(source);
|
|
258
|
+
const contexts = new Set(),
|
|
259
|
+
[value, setValue] = options.store ? options.store(options.initialValue) : createSignal(options.initialValue),
|
|
260
|
+
[track, trigger] = createSignal(undefined, {
|
|
261
|
+
equals: false
|
|
262
|
+
}),
|
|
263
|
+
[state, setState] = createSignal(resolved ? "ready" : "unresolved");
|
|
267
264
|
if (sharedConfig.context) {
|
|
268
265
|
id = `${sharedConfig.context.id}${sharedConfig.context.count++}`;
|
|
269
|
-
|
|
266
|
+
let v;
|
|
267
|
+
if (sharedConfig.load && (v = sharedConfig.load(id))) initP = v[0];
|
|
270
268
|
}
|
|
271
|
-
function loadEnd(p, v,
|
|
269
|
+
function loadEnd(p, v, success, key) {
|
|
272
270
|
if (pr === p) {
|
|
273
271
|
pr = null;
|
|
274
272
|
resolved = true;
|
|
275
|
-
if (
|
|
273
|
+
if ((p === initP || v === initP) && options.onHydrated) queueMicrotask(() => options.onHydrated(key, {
|
|
276
274
|
value: v
|
|
277
275
|
}));
|
|
278
|
-
initP =
|
|
279
|
-
setError(err = e);
|
|
276
|
+
initP = NO_INIT;
|
|
280
277
|
if (Transition && p && loadedUnderTransition) {
|
|
281
278
|
Transition.promises.delete(p);
|
|
282
279
|
loadedUnderTransition = false;
|
|
@@ -286,19 +283,20 @@ function createResource(source, fetcher, options) {
|
|
|
286
283
|
Effects.push.apply(Effects, Transition.effects);
|
|
287
284
|
Transition.effects = [];
|
|
288
285
|
}
|
|
289
|
-
completeLoad(v);
|
|
286
|
+
completeLoad(v, success);
|
|
290
287
|
}, false);
|
|
291
|
-
} else completeLoad(v);
|
|
288
|
+
} else completeLoad(v, success);
|
|
292
289
|
}
|
|
293
290
|
return v;
|
|
294
291
|
}
|
|
295
|
-
function completeLoad(v) {
|
|
296
|
-
|
|
292
|
+
function completeLoad(v, success) {
|
|
293
|
+
!success && (err = castError(v));
|
|
294
|
+
runUpdates(() => {
|
|
297
295
|
setValue(() => v);
|
|
298
|
-
|
|
296
|
+
setState(success ? "ready" : "error");
|
|
299
297
|
for (const c of contexts.keys()) c.decrement();
|
|
300
298
|
contexts.clear();
|
|
301
|
-
});
|
|
299
|
+
}, false);
|
|
302
300
|
}
|
|
303
301
|
function read() {
|
|
304
302
|
const c = SuspenseContext && lookup(Owner, SuspenseContext.id),
|
|
@@ -318,48 +316,54 @@ function createResource(source, fetcher, options) {
|
|
|
318
316
|
return v;
|
|
319
317
|
}
|
|
320
318
|
function load(refetching = true) {
|
|
321
|
-
if (refetching && scheduled) return;
|
|
319
|
+
if (refetching !== false && scheduled) return;
|
|
322
320
|
scheduled = false;
|
|
323
|
-
|
|
321
|
+
err = undefined;
|
|
324
322
|
const lookup = dynamic ? dynamic() : source;
|
|
325
323
|
loadedUnderTransition = Transition && Transition.running;
|
|
326
324
|
if (lookup == null || lookup === false) {
|
|
327
|
-
loadEnd(pr, untrack(value));
|
|
325
|
+
loadEnd(pr, untrack(value), true);
|
|
328
326
|
return;
|
|
329
327
|
}
|
|
330
328
|
if (Transition && pr) Transition.promises.delete(pr);
|
|
331
|
-
const p = initP
|
|
329
|
+
const p = initP !== NO_INIT ? initP : untrack(() => fetcher(lookup, {
|
|
332
330
|
value: value(),
|
|
333
331
|
refetching
|
|
334
332
|
}));
|
|
335
333
|
if (typeof p !== "object" || !("then" in p)) {
|
|
336
|
-
loadEnd(pr, p);
|
|
334
|
+
loadEnd(pr, p, true);
|
|
337
335
|
return p;
|
|
338
336
|
}
|
|
339
337
|
pr = p;
|
|
340
338
|
scheduled = true;
|
|
341
339
|
queueMicrotask(() => scheduled = false);
|
|
342
|
-
|
|
343
|
-
|
|
340
|
+
runUpdates(() => {
|
|
341
|
+
setState(resolved ? "refreshing" : "pending");
|
|
344
342
|
trigger();
|
|
345
|
-
});
|
|
346
|
-
return p.then(v => loadEnd(p, v,
|
|
343
|
+
}, false);
|
|
344
|
+
return p.then(v => loadEnd(p, v, true, lookup), e => loadEnd(p, e, false));
|
|
347
345
|
}
|
|
348
346
|
Object.defineProperties(read, {
|
|
347
|
+
state: {
|
|
348
|
+
get() {
|
|
349
|
+
return state();
|
|
350
|
+
}
|
|
351
|
+
},
|
|
349
352
|
loading: {
|
|
350
353
|
get() {
|
|
351
|
-
|
|
354
|
+
const s = state();
|
|
355
|
+
return s === "pending" || s === "refreshing";
|
|
352
356
|
}
|
|
353
357
|
},
|
|
354
358
|
error: {
|
|
355
359
|
get() {
|
|
356
|
-
return
|
|
360
|
+
return state() === "error" ? err : undefined;
|
|
357
361
|
}
|
|
358
362
|
},
|
|
359
363
|
latest: {
|
|
360
364
|
get() {
|
|
361
365
|
if (!resolved) return read();
|
|
362
|
-
if (
|
|
366
|
+
if (state() === "error") throw err;
|
|
363
367
|
return value();
|
|
364
368
|
}
|
|
365
369
|
}
|
|
@@ -412,25 +416,7 @@ function createSelector(source, fn = equalFn, options) {
|
|
|
412
416
|
};
|
|
413
417
|
}
|
|
414
418
|
function batch(fn) {
|
|
415
|
-
|
|
416
|
-
let result;
|
|
417
|
-
const q = Pending = [];
|
|
418
|
-
try {
|
|
419
|
-
result = fn();
|
|
420
|
-
} finally {
|
|
421
|
-
Pending = null;
|
|
422
|
-
}
|
|
423
|
-
runUpdates(() => {
|
|
424
|
-
for (let i = 0; i < q.length; i += 1) {
|
|
425
|
-
const data = q[i];
|
|
426
|
-
if (data.pending !== NOTPENDING) {
|
|
427
|
-
const pending = data.pending;
|
|
428
|
-
data.pending = NOTPENDING;
|
|
429
|
-
writeSignal(data, pending);
|
|
430
|
-
}
|
|
431
|
-
}
|
|
432
|
-
}, false);
|
|
433
|
-
return result;
|
|
419
|
+
return runUpdates(fn, false);
|
|
434
420
|
}
|
|
435
421
|
function untrack(fn) {
|
|
436
422
|
let result,
|
|
@@ -513,7 +499,7 @@ function startTransition(fn) {
|
|
|
513
499
|
t.done || (t.done = new Promise(res => t.resolve = res));
|
|
514
500
|
t.running = true;
|
|
515
501
|
}
|
|
516
|
-
|
|
502
|
+
runUpdates(fn, false);
|
|
517
503
|
Listener = Owner = null;
|
|
518
504
|
return t ? t.done : undefined;
|
|
519
505
|
});
|
|
@@ -566,10 +552,12 @@ function enableExternalSource(factory) {
|
|
|
566
552
|
function readSignal() {
|
|
567
553
|
const runningTransition = Transition && Transition.running;
|
|
568
554
|
if (this.sources && (!runningTransition && this.state || runningTransition && this.tState)) {
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
555
|
+
if (!runningTransition && this.state === STALE || runningTransition && this.tState === STALE) updateComputation(this);else {
|
|
556
|
+
const updates = Updates;
|
|
557
|
+
Updates = null;
|
|
558
|
+
runUpdates(() => lookUpstream(this), false);
|
|
559
|
+
Updates = updates;
|
|
560
|
+
}
|
|
573
561
|
}
|
|
574
562
|
if (Listener) {
|
|
575
563
|
const sSlot = this.observers ? this.observers.length : 0;
|
|
@@ -592,42 +580,35 @@ function readSignal() {
|
|
|
592
580
|
return this.value;
|
|
593
581
|
}
|
|
594
582
|
function writeSignal(node, value, isComp) {
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
if (node.comparator(node.tValue, value)) return value;
|
|
603
|
-
} else if (node.comparator(node.value, value)) return value;
|
|
604
|
-
}
|
|
605
|
-
let TransitionRunning = false;
|
|
606
|
-
if (Transition) {
|
|
607
|
-
TransitionRunning = Transition.running;
|
|
608
|
-
if (TransitionRunning || !isComp && Transition.sources.has(node)) {
|
|
609
|
-
Transition.sources.add(node);
|
|
610
|
-
node.tValue = value;
|
|
611
|
-
}
|
|
612
|
-
if (!TransitionRunning) node.value = value;
|
|
613
|
-
} else node.value = value;
|
|
614
|
-
if (node.observers && node.observers.length) {
|
|
615
|
-
runUpdates(() => {
|
|
616
|
-
for (let i = 0; i < node.observers.length; i += 1) {
|
|
617
|
-
const o = node.observers[i];
|
|
618
|
-
if (TransitionRunning && Transition.disposed.has(o)) continue;
|
|
619
|
-
if (TransitionRunning && !o.tState || !TransitionRunning && !o.state) {
|
|
620
|
-
if (o.pure) Updates.push(o);else Effects.push(o);
|
|
621
|
-
if (o.observers) markDownstream(o);
|
|
622
|
-
}
|
|
623
|
-
if (TransitionRunning) o.tState = STALE;else o.state = STALE;
|
|
624
|
-
}
|
|
625
|
-
if (Updates.length > 10e5) {
|
|
626
|
-
Updates = [];
|
|
627
|
-
if (false) ;
|
|
628
|
-
throw new Error();
|
|
583
|
+
let current = Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value;
|
|
584
|
+
if (!node.comparator || !node.comparator(current, value)) {
|
|
585
|
+
if (Transition) {
|
|
586
|
+
const TransitionRunning = Transition.running;
|
|
587
|
+
if (TransitionRunning || !isComp && Transition.sources.has(node)) {
|
|
588
|
+
Transition.sources.add(node);
|
|
589
|
+
node.tValue = value;
|
|
629
590
|
}
|
|
630
|
-
|
|
591
|
+
if (!TransitionRunning) node.value = value;
|
|
592
|
+
} else node.value = value;
|
|
593
|
+
if (node.observers && node.observers.length) {
|
|
594
|
+
runUpdates(() => {
|
|
595
|
+
for (let i = 0; i < node.observers.length; i += 1) {
|
|
596
|
+
const o = node.observers[i];
|
|
597
|
+
const TransitionRunning = Transition && Transition.running;
|
|
598
|
+
if (TransitionRunning && Transition.disposed.has(o)) continue;
|
|
599
|
+
if (TransitionRunning && !o.tState || !TransitionRunning && !o.state) {
|
|
600
|
+
if (o.pure) Updates.push(o);else Effects.push(o);
|
|
601
|
+
if (o.observers) markDownstream(o);
|
|
602
|
+
}
|
|
603
|
+
if (TransitionRunning) o.tState = STALE;else o.state = STALE;
|
|
604
|
+
}
|
|
605
|
+
if (Updates.length > 10e5) {
|
|
606
|
+
Updates = [];
|
|
607
|
+
if (false) ;
|
|
608
|
+
throw new Error();
|
|
609
|
+
}
|
|
610
|
+
}, false);
|
|
611
|
+
}
|
|
631
612
|
}
|
|
632
613
|
return value;
|
|
633
614
|
}
|
|
@@ -655,10 +636,11 @@ function runComputation(node, value, time) {
|
|
|
655
636
|
try {
|
|
656
637
|
nextValue = node.fn(value);
|
|
657
638
|
} catch (err) {
|
|
639
|
+
if (node.pure) Transition && Transition.running ? node.tState = STALE : node.state = STALE;
|
|
658
640
|
handleError(err);
|
|
659
641
|
}
|
|
660
642
|
if (!node.updatedAt || node.updatedAt <= time) {
|
|
661
|
-
if (node.
|
|
643
|
+
if (node.updatedAt && "observers" in node) {
|
|
662
644
|
writeSignal(node, nextValue, true);
|
|
663
645
|
} else if (Transition && Transition.running && node.pure) {
|
|
664
646
|
Transition.sources.add(node);
|
|
@@ -731,7 +713,7 @@ function runTop(node) {
|
|
|
731
713
|
} else if (!runningTransition && node.state === PENDING || runningTransition && node.tState === PENDING) {
|
|
732
714
|
const updates = Updates;
|
|
733
715
|
Updates = null;
|
|
734
|
-
lookUpstream(node, ancestors[0]);
|
|
716
|
+
runUpdates(() => lookUpstream(node, ancestors[0]), false);
|
|
735
717
|
Updates = updates;
|
|
736
718
|
}
|
|
737
719
|
}
|
|
@@ -774,7 +756,7 @@ function completeUpdates(wait) {
|
|
|
774
756
|
delete e.tState;
|
|
775
757
|
}
|
|
776
758
|
Transition = null;
|
|
777
|
-
|
|
759
|
+
runUpdates(() => {
|
|
778
760
|
for (const d of disposed) cleanNode(d);
|
|
779
761
|
for (const v of sources) {
|
|
780
762
|
v.value = v.tValue;
|
|
@@ -787,14 +769,11 @@ function completeUpdates(wait) {
|
|
|
787
769
|
v.tState = 0;
|
|
788
770
|
}
|
|
789
771
|
setTransPending(false);
|
|
790
|
-
});
|
|
791
|
-
}
|
|
792
|
-
if (Effects.length) batch(() => {
|
|
793
|
-
runEffects(Effects);
|
|
794
|
-
Effects = null;
|
|
795
|
-
});else {
|
|
796
|
-
Effects = null;
|
|
772
|
+
}, false);
|
|
797
773
|
}
|
|
774
|
+
const e = Effects;
|
|
775
|
+
Effects = null;
|
|
776
|
+
if (e.length) runUpdates(() => runEffects(e), false);
|
|
798
777
|
if (res) res();
|
|
799
778
|
}
|
|
800
779
|
function runQueue(queue) {
|
|
@@ -829,9 +808,9 @@ function runUserEffects(queue) {
|
|
|
829
808
|
if (!e.user) runTop(e);else queue[userLength++] = e;
|
|
830
809
|
}
|
|
831
810
|
if (sharedConfig.context) setHydrateContext();
|
|
832
|
-
|
|
811
|
+
Effects = [];
|
|
833
812
|
for (i = 0; i < userLength; i++) runTop(queue[i]);
|
|
834
|
-
|
|
813
|
+
if (Effects.length) runUserEffects(Effects);
|
|
835
814
|
}
|
|
836
815
|
function lookUpstream(node, ignore) {
|
|
837
816
|
const runningTransition = Transition && Transition.running;
|
|
@@ -900,7 +879,12 @@ function reset(node, top) {
|
|
|
900
879
|
for (let i = 0; i < node.owned.length; i++) reset(node.owned[i]);
|
|
901
880
|
}
|
|
902
881
|
}
|
|
882
|
+
function castError(err) {
|
|
883
|
+
if (err instanceof Error || typeof err === "string") return err;
|
|
884
|
+
return new Error("Unknown error");
|
|
885
|
+
}
|
|
903
886
|
function handleError(err) {
|
|
887
|
+
err = castError(err);
|
|
904
888
|
const fns = ERROR && lookup(Owner, ERROR);
|
|
905
889
|
if (!fns) throw err;
|
|
906
890
|
for (const f of fns) f(err);
|
|
@@ -946,7 +930,7 @@ function observable(input) {
|
|
|
946
930
|
};
|
|
947
931
|
}
|
|
948
932
|
const dispose = createRoot(disposer => {
|
|
949
|
-
|
|
933
|
+
createEffect(() => {
|
|
950
934
|
const v = input();
|
|
951
935
|
untrack(() => handler(v));
|
|
952
936
|
});
|
|
@@ -1335,24 +1319,24 @@ function Match(props) {
|
|
|
1335
1319
|
return props;
|
|
1336
1320
|
}
|
|
1337
1321
|
let Errors;
|
|
1338
|
-
const NoErrors = {};
|
|
1339
1322
|
function resetErrorBoundaries() {
|
|
1340
|
-
Errors && [...Errors].forEach(fn => fn(
|
|
1323
|
+
Errors && [...Errors].forEach(fn => fn());
|
|
1341
1324
|
}
|
|
1342
1325
|
function ErrorBoundary(props) {
|
|
1343
|
-
let err
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
}
|
|
1326
|
+
let err;
|
|
1327
|
+
let v;
|
|
1328
|
+
if (sharedConfig.context && sharedConfig.load && (v = sharedConfig.load(sharedConfig.context.id + sharedConfig.context.count))) err = v[0];
|
|
1347
1329
|
const [errored, setErrored] = createSignal(err);
|
|
1348
1330
|
Errors || (Errors = new Set());
|
|
1349
1331
|
Errors.add(setErrored);
|
|
1350
1332
|
onCleanup(() => Errors.delete(setErrored));
|
|
1351
1333
|
return createMemo(() => {
|
|
1352
1334
|
let e;
|
|
1353
|
-
if (
|
|
1335
|
+
if (e = errored()) {
|
|
1354
1336
|
const f = props.fallback;
|
|
1355
|
-
|
|
1337
|
+
const res = typeof f === "function" && f.length ? untrack(() => f(e, () => setErrored())) : f;
|
|
1338
|
+
onError(setErrored);
|
|
1339
|
+
return res;
|
|
1356
1340
|
}
|
|
1357
1341
|
onError(setErrored);
|
|
1358
1342
|
return props.children;
|
|
@@ -1447,21 +1431,24 @@ function Suspense(props) {
|
|
|
1447
1431
|
owner = getOwner();
|
|
1448
1432
|
if (sharedConfig.context && sharedConfig.load) {
|
|
1449
1433
|
const key = sharedConfig.context.id + sharedConfig.context.count;
|
|
1450
|
-
|
|
1451
|
-
if (p) {
|
|
1434
|
+
let ref = sharedConfig.load(key);
|
|
1435
|
+
if (ref && (p = ref[0]) && p !== "$$f") {
|
|
1452
1436
|
if (typeof p !== "object" || !("then" in p)) p = Promise.resolve(p);
|
|
1453
1437
|
const [s, set] = createSignal(undefined, {
|
|
1454
1438
|
equals: false
|
|
1455
1439
|
});
|
|
1456
1440
|
flicker = s;
|
|
1457
1441
|
p.then(err => {
|
|
1458
|
-
if (
|
|
1442
|
+
if (err || sharedConfig.done) {
|
|
1443
|
+
err && (error = err);
|
|
1444
|
+
return set();
|
|
1445
|
+
}
|
|
1459
1446
|
sharedConfig.gather(key);
|
|
1460
1447
|
setHydrateContext(ctx);
|
|
1461
1448
|
set();
|
|
1462
1449
|
setHydrateContext();
|
|
1463
1450
|
});
|
|
1464
|
-
}
|
|
1451
|
+
}
|
|
1465
1452
|
}
|
|
1466
1453
|
const listContext = useContext(SuspenseListContext);
|
|
1467
1454
|
if (listContext) [showContent, showFallback] = listContext.register(store.inFallback);
|
|
@@ -1477,14 +1464,14 @@ function Suspense(props) {
|
|
|
1477
1464
|
flicker();
|
|
1478
1465
|
return flicker = undefined;
|
|
1479
1466
|
}
|
|
1480
|
-
if (ctx && p ===
|
|
1467
|
+
if (ctx && p === "$$f") setHydrateContext();
|
|
1481
1468
|
const rendered = createMemo(() => props.children);
|
|
1482
1469
|
return createMemo(() => {
|
|
1483
1470
|
const inFallback = store.inFallback(),
|
|
1484
1471
|
visibleContent = showContent ? showContent() : true,
|
|
1485
1472
|
visibleFallback = showFallback ? showFallback() : true;
|
|
1486
1473
|
dispose && dispose();
|
|
1487
|
-
if ((!inFallback || p !==
|
|
1474
|
+
if ((!inFallback || p && p !== "$$f") && visibleContent) {
|
|
1488
1475
|
store.resolved = true;
|
|
1489
1476
|
ctx = p = undefined;
|
|
1490
1477
|
resumeEffects(store.effects);
|