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.js
CHANGED
|
@@ -134,7 +134,6 @@ const signalOptions = {
|
|
|
134
134
|
};
|
|
135
135
|
let ERROR = null;
|
|
136
136
|
let runEffects = runQueue;
|
|
137
|
-
const NOTPENDING = {};
|
|
138
137
|
const STALE = 1;
|
|
139
138
|
const PENDING = 2;
|
|
140
139
|
const UNOWNED = {
|
|
@@ -143,13 +142,13 @@ const UNOWNED = {
|
|
|
143
142
|
context: null,
|
|
144
143
|
owner: null
|
|
145
144
|
};
|
|
145
|
+
const NO_INIT = {};
|
|
146
146
|
const [transPending, setTransPending] = /*@__PURE__*/createSignal(false);
|
|
147
147
|
var Owner = null;
|
|
148
148
|
let Transition = null;
|
|
149
149
|
let Scheduler = null;
|
|
150
150
|
let ExternalSourceFactory = null;
|
|
151
151
|
let Listener = null;
|
|
152
|
-
let Pending = null;
|
|
153
152
|
let Updates = null;
|
|
154
153
|
let Effects = null;
|
|
155
154
|
let ExecCount = 0;
|
|
@@ -179,12 +178,11 @@ function createSignal(value, options) {
|
|
|
179
178
|
value,
|
|
180
179
|
observers: null,
|
|
181
180
|
observerSlots: null,
|
|
182
|
-
pending: NOTPENDING,
|
|
183
181
|
comparator: options.equals || undefined
|
|
184
182
|
};
|
|
185
183
|
const setter = value => {
|
|
186
184
|
if (typeof value === "function") {
|
|
187
|
-
if (Transition && Transition.running && Transition.sources.has(s)) value = value(s.
|
|
185
|
+
if (Transition && Transition.running && Transition.sources.has(s)) value = value(s.tValue);else value = value(s.value);
|
|
188
186
|
}
|
|
189
187
|
return writeSignal(s, value);
|
|
190
188
|
};
|
|
@@ -223,7 +221,6 @@ function createReaction(onInvalidate, options) {
|
|
|
223
221
|
function createMemo(fn, value, options) {
|
|
224
222
|
options = options ? Object.assign({}, signalOptions, options) : signalOptions;
|
|
225
223
|
const c = createComputation(fn, value, true, 0);
|
|
226
|
-
c.pending = NOTPENDING;
|
|
227
224
|
c.observers = null;
|
|
228
225
|
c.observerSlots = null;
|
|
229
226
|
c.comparator = options.equals || undefined;
|
|
@@ -233,46 +230,46 @@ function createMemo(fn, value, options) {
|
|
|
233
230
|
} else updateComputation(c);
|
|
234
231
|
return readSignal.bind(c);
|
|
235
232
|
}
|
|
236
|
-
function createResource(
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
source = true;
|
|
242
|
-
}
|
|
243
|
-
} else if (arguments.length === 1) {
|
|
244
|
-
fetcher = source;
|
|
233
|
+
function createResource(pSource, pFetcher, pOptions) {
|
|
234
|
+
let source;
|
|
235
|
+
let fetcher;
|
|
236
|
+
let options;
|
|
237
|
+
if (arguments.length === 2 && typeof pFetcher === "object" || arguments.length === 1) {
|
|
245
238
|
source = true;
|
|
239
|
+
fetcher = pSource;
|
|
240
|
+
options = pFetcher || {};
|
|
241
|
+
} else {
|
|
242
|
+
source = pSource;
|
|
243
|
+
fetcher = pFetcher;
|
|
244
|
+
options = pOptions || {};
|
|
246
245
|
}
|
|
247
|
-
options || (options = {});
|
|
248
|
-
const contexts = new Set(),
|
|
249
|
-
[value, setValue] = createSignal(options.initialValue),
|
|
250
|
-
[track, trigger] = createSignal(undefined, {
|
|
251
|
-
equals: false
|
|
252
|
-
}),
|
|
253
|
-
[loading, setLoading] = createSignal(false),
|
|
254
|
-
[error, setError] = createSignal();
|
|
255
246
|
let err = undefined,
|
|
256
247
|
pr = null,
|
|
257
|
-
initP =
|
|
248
|
+
initP = NO_INIT,
|
|
258
249
|
id = null,
|
|
259
250
|
loadedUnderTransition = false,
|
|
260
251
|
scheduled = false,
|
|
261
252
|
resolved = ("initialValue" in options),
|
|
262
253
|
dynamic = typeof source === "function" && createMemo(source);
|
|
254
|
+
const contexts = new Set(),
|
|
255
|
+
[value, setValue] = options.store ? options.store(options.initialValue) : createSignal(options.initialValue),
|
|
256
|
+
[track, trigger] = createSignal(undefined, {
|
|
257
|
+
equals: false
|
|
258
|
+
}),
|
|
259
|
+
[state, setState] = createSignal(resolved ? "ready" : "unresolved");
|
|
263
260
|
if (sharedConfig.context) {
|
|
264
261
|
id = `${sharedConfig.context.id}${sharedConfig.context.count++}`;
|
|
265
|
-
|
|
262
|
+
let v;
|
|
263
|
+
if (sharedConfig.load && (v = sharedConfig.load(id))) initP = v[0];
|
|
266
264
|
}
|
|
267
|
-
function loadEnd(p, v,
|
|
265
|
+
function loadEnd(p, v, success, key) {
|
|
268
266
|
if (pr === p) {
|
|
269
267
|
pr = null;
|
|
270
268
|
resolved = true;
|
|
271
|
-
if (
|
|
269
|
+
if ((p === initP || v === initP) && options.onHydrated) queueMicrotask(() => options.onHydrated(key, {
|
|
272
270
|
value: v
|
|
273
271
|
}));
|
|
274
|
-
initP =
|
|
275
|
-
setError(err = e);
|
|
272
|
+
initP = NO_INIT;
|
|
276
273
|
if (Transition && p && loadedUnderTransition) {
|
|
277
274
|
Transition.promises.delete(p);
|
|
278
275
|
loadedUnderTransition = false;
|
|
@@ -282,19 +279,20 @@ function createResource(source, fetcher, options) {
|
|
|
282
279
|
Effects.push.apply(Effects, Transition.effects);
|
|
283
280
|
Transition.effects = [];
|
|
284
281
|
}
|
|
285
|
-
completeLoad(v);
|
|
282
|
+
completeLoad(v, success);
|
|
286
283
|
}, false);
|
|
287
|
-
} else completeLoad(v);
|
|
284
|
+
} else completeLoad(v, success);
|
|
288
285
|
}
|
|
289
286
|
return v;
|
|
290
287
|
}
|
|
291
|
-
function completeLoad(v) {
|
|
292
|
-
|
|
288
|
+
function completeLoad(v, success) {
|
|
289
|
+
!success && (err = castError(v));
|
|
290
|
+
runUpdates(() => {
|
|
293
291
|
setValue(() => v);
|
|
294
|
-
|
|
292
|
+
setState(success ? "ready" : "error");
|
|
295
293
|
for (const c of contexts.keys()) c.decrement();
|
|
296
294
|
contexts.clear();
|
|
297
|
-
});
|
|
295
|
+
}, false);
|
|
298
296
|
}
|
|
299
297
|
function read() {
|
|
300
298
|
const c = SuspenseContext && lookup(Owner, SuspenseContext.id),
|
|
@@ -314,48 +312,54 @@ function createResource(source, fetcher, options) {
|
|
|
314
312
|
return v;
|
|
315
313
|
}
|
|
316
314
|
function load(refetching = true) {
|
|
317
|
-
if (refetching && scheduled) return;
|
|
315
|
+
if (refetching !== false && scheduled) return;
|
|
318
316
|
scheduled = false;
|
|
319
|
-
|
|
317
|
+
err = undefined;
|
|
320
318
|
const lookup = dynamic ? dynamic() : source;
|
|
321
319
|
loadedUnderTransition = Transition && Transition.running;
|
|
322
320
|
if (lookup == null || lookup === false) {
|
|
323
|
-
loadEnd(pr, untrack(value));
|
|
321
|
+
loadEnd(pr, untrack(value), true);
|
|
324
322
|
return;
|
|
325
323
|
}
|
|
326
324
|
if (Transition && pr) Transition.promises.delete(pr);
|
|
327
|
-
const p = initP
|
|
325
|
+
const p = initP !== NO_INIT ? initP : untrack(() => fetcher(lookup, {
|
|
328
326
|
value: value(),
|
|
329
327
|
refetching
|
|
330
328
|
}));
|
|
331
329
|
if (typeof p !== "object" || !("then" in p)) {
|
|
332
|
-
loadEnd(pr, p);
|
|
330
|
+
loadEnd(pr, p, true);
|
|
333
331
|
return p;
|
|
334
332
|
}
|
|
335
333
|
pr = p;
|
|
336
334
|
scheduled = true;
|
|
337
335
|
queueMicrotask(() => scheduled = false);
|
|
338
|
-
|
|
339
|
-
|
|
336
|
+
runUpdates(() => {
|
|
337
|
+
setState(resolved ? "refreshing" : "pending");
|
|
340
338
|
trigger();
|
|
341
|
-
});
|
|
342
|
-
return p.then(v => loadEnd(p, v,
|
|
339
|
+
}, false);
|
|
340
|
+
return p.then(v => loadEnd(p, v, true, lookup), e => loadEnd(p, e, false));
|
|
343
341
|
}
|
|
344
342
|
Object.defineProperties(read, {
|
|
343
|
+
state: {
|
|
344
|
+
get() {
|
|
345
|
+
return state();
|
|
346
|
+
}
|
|
347
|
+
},
|
|
345
348
|
loading: {
|
|
346
349
|
get() {
|
|
347
|
-
|
|
350
|
+
const s = state();
|
|
351
|
+
return s === "pending" || s === "refreshing";
|
|
348
352
|
}
|
|
349
353
|
},
|
|
350
354
|
error: {
|
|
351
355
|
get() {
|
|
352
|
-
return
|
|
356
|
+
return state() === "error" ? err : undefined;
|
|
353
357
|
}
|
|
354
358
|
},
|
|
355
359
|
latest: {
|
|
356
360
|
get() {
|
|
357
361
|
if (!resolved) return read();
|
|
358
|
-
if (
|
|
362
|
+
if (state() === "error") throw err;
|
|
359
363
|
return value();
|
|
360
364
|
}
|
|
361
365
|
}
|
|
@@ -408,25 +412,7 @@ function createSelector(source, fn = equalFn, options) {
|
|
|
408
412
|
};
|
|
409
413
|
}
|
|
410
414
|
function batch(fn) {
|
|
411
|
-
|
|
412
|
-
let result;
|
|
413
|
-
const q = Pending = [];
|
|
414
|
-
try {
|
|
415
|
-
result = fn();
|
|
416
|
-
} finally {
|
|
417
|
-
Pending = null;
|
|
418
|
-
}
|
|
419
|
-
runUpdates(() => {
|
|
420
|
-
for (let i = 0; i < q.length; i += 1) {
|
|
421
|
-
const data = q[i];
|
|
422
|
-
if (data.pending !== NOTPENDING) {
|
|
423
|
-
const pending = data.pending;
|
|
424
|
-
data.pending = NOTPENDING;
|
|
425
|
-
writeSignal(data, pending);
|
|
426
|
-
}
|
|
427
|
-
}
|
|
428
|
-
}, false);
|
|
429
|
-
return result;
|
|
415
|
+
return runUpdates(fn, false);
|
|
430
416
|
}
|
|
431
417
|
function untrack(fn) {
|
|
432
418
|
let result,
|
|
@@ -509,7 +495,7 @@ function startTransition(fn) {
|
|
|
509
495
|
t.done || (t.done = new Promise(res => t.resolve = res));
|
|
510
496
|
t.running = true;
|
|
511
497
|
}
|
|
512
|
-
|
|
498
|
+
runUpdates(fn, false);
|
|
513
499
|
Listener = Owner = null;
|
|
514
500
|
return t ? t.done : undefined;
|
|
515
501
|
});
|
|
@@ -562,10 +548,12 @@ function enableExternalSource(factory) {
|
|
|
562
548
|
function readSignal() {
|
|
563
549
|
const runningTransition = Transition && Transition.running;
|
|
564
550
|
if (this.sources && (!runningTransition && this.state || runningTransition && this.tState)) {
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
551
|
+
if (!runningTransition && this.state === STALE || runningTransition && this.tState === STALE) updateComputation(this);else {
|
|
552
|
+
const updates = Updates;
|
|
553
|
+
Updates = null;
|
|
554
|
+
runUpdates(() => lookUpstream(this), false);
|
|
555
|
+
Updates = updates;
|
|
556
|
+
}
|
|
569
557
|
}
|
|
570
558
|
if (Listener) {
|
|
571
559
|
const sSlot = this.observers ? this.observers.length : 0;
|
|
@@ -588,42 +576,35 @@ function readSignal() {
|
|
|
588
576
|
return this.value;
|
|
589
577
|
}
|
|
590
578
|
function writeSignal(node, value, isComp) {
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
if (node.comparator(node.tValue, value)) return value;
|
|
599
|
-
} else if (node.comparator(node.value, value)) return value;
|
|
600
|
-
}
|
|
601
|
-
let TransitionRunning = false;
|
|
602
|
-
if (Transition) {
|
|
603
|
-
TransitionRunning = Transition.running;
|
|
604
|
-
if (TransitionRunning || !isComp && Transition.sources.has(node)) {
|
|
605
|
-
Transition.sources.add(node);
|
|
606
|
-
node.tValue = value;
|
|
607
|
-
}
|
|
608
|
-
if (!TransitionRunning) node.value = value;
|
|
609
|
-
} else node.value = value;
|
|
610
|
-
if (node.observers && node.observers.length) {
|
|
611
|
-
runUpdates(() => {
|
|
612
|
-
for (let i = 0; i < node.observers.length; i += 1) {
|
|
613
|
-
const o = node.observers[i];
|
|
614
|
-
if (TransitionRunning && Transition.disposed.has(o)) continue;
|
|
615
|
-
if (TransitionRunning && !o.tState || !TransitionRunning && !o.state) {
|
|
616
|
-
if (o.pure) Updates.push(o);else Effects.push(o);
|
|
617
|
-
if (o.observers) markDownstream(o);
|
|
618
|
-
}
|
|
619
|
-
if (TransitionRunning) o.tState = STALE;else o.state = STALE;
|
|
620
|
-
}
|
|
621
|
-
if (Updates.length > 10e5) {
|
|
622
|
-
Updates = [];
|
|
623
|
-
if (false) ;
|
|
624
|
-
throw new Error();
|
|
579
|
+
let current = Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value;
|
|
580
|
+
if (!node.comparator || !node.comparator(current, value)) {
|
|
581
|
+
if (Transition) {
|
|
582
|
+
const TransitionRunning = Transition.running;
|
|
583
|
+
if (TransitionRunning || !isComp && Transition.sources.has(node)) {
|
|
584
|
+
Transition.sources.add(node);
|
|
585
|
+
node.tValue = value;
|
|
625
586
|
}
|
|
626
|
-
|
|
587
|
+
if (!TransitionRunning) node.value = value;
|
|
588
|
+
} else node.value = value;
|
|
589
|
+
if (node.observers && node.observers.length) {
|
|
590
|
+
runUpdates(() => {
|
|
591
|
+
for (let i = 0; i < node.observers.length; i += 1) {
|
|
592
|
+
const o = node.observers[i];
|
|
593
|
+
const TransitionRunning = Transition && Transition.running;
|
|
594
|
+
if (TransitionRunning && Transition.disposed.has(o)) continue;
|
|
595
|
+
if (TransitionRunning && !o.tState || !TransitionRunning && !o.state) {
|
|
596
|
+
if (o.pure) Updates.push(o);else Effects.push(o);
|
|
597
|
+
if (o.observers) markDownstream(o);
|
|
598
|
+
}
|
|
599
|
+
if (TransitionRunning) o.tState = STALE;else o.state = STALE;
|
|
600
|
+
}
|
|
601
|
+
if (Updates.length > 10e5) {
|
|
602
|
+
Updates = [];
|
|
603
|
+
if (false) ;
|
|
604
|
+
throw new Error();
|
|
605
|
+
}
|
|
606
|
+
}, false);
|
|
607
|
+
}
|
|
627
608
|
}
|
|
628
609
|
return value;
|
|
629
610
|
}
|
|
@@ -651,10 +632,11 @@ function runComputation(node, value, time) {
|
|
|
651
632
|
try {
|
|
652
633
|
nextValue = node.fn(value);
|
|
653
634
|
} catch (err) {
|
|
635
|
+
if (node.pure) Transition && Transition.running ? node.tState = STALE : node.state = STALE;
|
|
654
636
|
handleError(err);
|
|
655
637
|
}
|
|
656
638
|
if (!node.updatedAt || node.updatedAt <= time) {
|
|
657
|
-
if (node.
|
|
639
|
+
if (node.updatedAt && "observers" in node) {
|
|
658
640
|
writeSignal(node, nextValue, true);
|
|
659
641
|
} else if (Transition && Transition.running && node.pure) {
|
|
660
642
|
Transition.sources.add(node);
|
|
@@ -727,7 +709,7 @@ function runTop(node) {
|
|
|
727
709
|
} else if (!runningTransition && node.state === PENDING || runningTransition && node.tState === PENDING) {
|
|
728
710
|
const updates = Updates;
|
|
729
711
|
Updates = null;
|
|
730
|
-
lookUpstream(node, ancestors[0]);
|
|
712
|
+
runUpdates(() => lookUpstream(node, ancestors[0]), false);
|
|
731
713
|
Updates = updates;
|
|
732
714
|
}
|
|
733
715
|
}
|
|
@@ -770,7 +752,7 @@ function completeUpdates(wait) {
|
|
|
770
752
|
delete e.tState;
|
|
771
753
|
}
|
|
772
754
|
Transition = null;
|
|
773
|
-
|
|
755
|
+
runUpdates(() => {
|
|
774
756
|
for (const d of disposed) cleanNode(d);
|
|
775
757
|
for (const v of sources) {
|
|
776
758
|
v.value = v.tValue;
|
|
@@ -783,14 +765,11 @@ function completeUpdates(wait) {
|
|
|
783
765
|
v.tState = 0;
|
|
784
766
|
}
|
|
785
767
|
setTransPending(false);
|
|
786
|
-
});
|
|
787
|
-
}
|
|
788
|
-
if (Effects.length) batch(() => {
|
|
789
|
-
runEffects(Effects);
|
|
790
|
-
Effects = null;
|
|
791
|
-
});else {
|
|
792
|
-
Effects = null;
|
|
768
|
+
}, false);
|
|
793
769
|
}
|
|
770
|
+
const e = Effects;
|
|
771
|
+
Effects = null;
|
|
772
|
+
if (e.length) runUpdates(() => runEffects(e), false);
|
|
794
773
|
if (res) res();
|
|
795
774
|
}
|
|
796
775
|
function runQueue(queue) {
|
|
@@ -825,9 +804,9 @@ function runUserEffects(queue) {
|
|
|
825
804
|
if (!e.user) runTop(e);else queue[userLength++] = e;
|
|
826
805
|
}
|
|
827
806
|
if (sharedConfig.context) setHydrateContext();
|
|
828
|
-
|
|
807
|
+
Effects = [];
|
|
829
808
|
for (i = 0; i < userLength; i++) runTop(queue[i]);
|
|
830
|
-
|
|
809
|
+
if (Effects.length) runUserEffects(Effects);
|
|
831
810
|
}
|
|
832
811
|
function lookUpstream(node, ignore) {
|
|
833
812
|
const runningTransition = Transition && Transition.running;
|
|
@@ -896,7 +875,12 @@ function reset(node, top) {
|
|
|
896
875
|
for (let i = 0; i < node.owned.length; i++) reset(node.owned[i]);
|
|
897
876
|
}
|
|
898
877
|
}
|
|
878
|
+
function castError(err) {
|
|
879
|
+
if (err instanceof Error || typeof err === "string") return err;
|
|
880
|
+
return new Error("Unknown error");
|
|
881
|
+
}
|
|
899
882
|
function handleError(err) {
|
|
883
|
+
err = castError(err);
|
|
900
884
|
const fns = ERROR && lookup(Owner, ERROR);
|
|
901
885
|
if (!fns) throw err;
|
|
902
886
|
for (const f of fns) f(err);
|
|
@@ -942,7 +926,7 @@ function observable(input) {
|
|
|
942
926
|
};
|
|
943
927
|
}
|
|
944
928
|
const dispose = createRoot(disposer => {
|
|
945
|
-
|
|
929
|
+
createEffect(() => {
|
|
946
930
|
const v = input();
|
|
947
931
|
untrack(() => handler(v));
|
|
948
932
|
});
|
|
@@ -1331,24 +1315,24 @@ function Match(props) {
|
|
|
1331
1315
|
return props;
|
|
1332
1316
|
}
|
|
1333
1317
|
let Errors;
|
|
1334
|
-
const NoErrors = {};
|
|
1335
1318
|
function resetErrorBoundaries() {
|
|
1336
|
-
Errors && [...Errors].forEach(fn => fn(
|
|
1319
|
+
Errors && [...Errors].forEach(fn => fn());
|
|
1337
1320
|
}
|
|
1338
1321
|
function ErrorBoundary(props) {
|
|
1339
|
-
let err
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
}
|
|
1322
|
+
let err;
|
|
1323
|
+
let v;
|
|
1324
|
+
if (sharedConfig.context && sharedConfig.load && (v = sharedConfig.load(sharedConfig.context.id + sharedConfig.context.count))) err = v[0];
|
|
1343
1325
|
const [errored, setErrored] = createSignal(err);
|
|
1344
1326
|
Errors || (Errors = new Set());
|
|
1345
1327
|
Errors.add(setErrored);
|
|
1346
1328
|
onCleanup(() => Errors.delete(setErrored));
|
|
1347
1329
|
return createMemo(() => {
|
|
1348
1330
|
let e;
|
|
1349
|
-
if (
|
|
1331
|
+
if (e = errored()) {
|
|
1350
1332
|
const f = props.fallback;
|
|
1351
|
-
|
|
1333
|
+
const res = typeof f === "function" && f.length ? untrack(() => f(e, () => setErrored())) : f;
|
|
1334
|
+
onError(setErrored);
|
|
1335
|
+
return res;
|
|
1352
1336
|
}
|
|
1353
1337
|
onError(setErrored);
|
|
1354
1338
|
return props.children;
|
|
@@ -1443,21 +1427,24 @@ function Suspense(props) {
|
|
|
1443
1427
|
owner = getOwner();
|
|
1444
1428
|
if (sharedConfig.context && sharedConfig.load) {
|
|
1445
1429
|
const key = sharedConfig.context.id + sharedConfig.context.count;
|
|
1446
|
-
|
|
1447
|
-
if (p) {
|
|
1430
|
+
let ref = sharedConfig.load(key);
|
|
1431
|
+
if (ref && (p = ref[0]) && p !== "$$f") {
|
|
1448
1432
|
if (typeof p !== "object" || !("then" in p)) p = Promise.resolve(p);
|
|
1449
1433
|
const [s, set] = createSignal(undefined, {
|
|
1450
1434
|
equals: false
|
|
1451
1435
|
});
|
|
1452
1436
|
flicker = s;
|
|
1453
1437
|
p.then(err => {
|
|
1454
|
-
if (
|
|
1438
|
+
if (err || sharedConfig.done) {
|
|
1439
|
+
err && (error = err);
|
|
1440
|
+
return set();
|
|
1441
|
+
}
|
|
1455
1442
|
sharedConfig.gather(key);
|
|
1456
1443
|
setHydrateContext(ctx);
|
|
1457
1444
|
set();
|
|
1458
1445
|
setHydrateContext();
|
|
1459
1446
|
});
|
|
1460
|
-
}
|
|
1447
|
+
}
|
|
1461
1448
|
}
|
|
1462
1449
|
const listContext = useContext(SuspenseListContext);
|
|
1463
1450
|
if (listContext) [showContent, showFallback] = listContext.register(store.inFallback);
|
|
@@ -1473,14 +1460,14 @@ function Suspense(props) {
|
|
|
1473
1460
|
flicker();
|
|
1474
1461
|
return flicker = undefined;
|
|
1475
1462
|
}
|
|
1476
|
-
if (ctx && p ===
|
|
1463
|
+
if (ctx && p === "$$f") setHydrateContext();
|
|
1477
1464
|
const rendered = createMemo(() => props.children);
|
|
1478
1465
|
return createMemo(() => {
|
|
1479
1466
|
const inFallback = store.inFallback(),
|
|
1480
1467
|
visibleContent = showContent ? showContent() : true,
|
|
1481
1468
|
visibleFallback = showFallback ? showFallback() : true;
|
|
1482
1469
|
dispose && dispose();
|
|
1483
|
-
if ((!inFallback || p !==
|
|
1470
|
+
if ((!inFallback || p && p !== "$$f") && visibleContent) {
|
|
1484
1471
|
store.resolved = true;
|
|
1485
1472
|
ctx = p = undefined;
|
|
1486
1473
|
resumeEffects(store.effects);
|