solid-js 1.5.1 → 1.5.4
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 +20 -21
- package/dist/dev.js +20 -21
- package/dist/server.cjs +15 -10
- package/dist/server.js +15 -11
- package/dist/solid.cjs +20 -21
- package/dist/solid.js +20 -21
- package/h/jsx-runtime/package.json +8 -0
- package/h/jsx-runtime/types/jsx.d.ts +74 -73
- package/h/package.json +8 -0
- package/html/dist/html.cjs +2 -1
- package/html/dist/html.js +3 -2
- package/html/package.json +8 -0
- package/html/types/lit.d.ts +1 -0
- package/package.json +7 -1
- package/store/package.json +50 -0
- package/types/jsx.d.ts +37 -36
- package/types/reactive/observable.d.ts +2 -2
- package/types/reactive/signal.d.ts +5 -2
- package/types/server/index.d.ts +1 -1
- package/types/server/reactive.d.ts +1 -0
- package/types/server/rendering.d.ts +1 -1
- package/universal/package.json +24 -0
- package/web/dist/dev.cjs +7 -1
- package/web/dist/dev.js +4 -2
- package/web/dist/server.cjs +16 -9
- package/web/dist/server.js +15 -10
- package/web/dist/web.cjs +5 -1
- package/web/dist/web.js +2 -2
- package/web/package.json +50 -0
- package/web/types/client.d.ts +2 -1
package/dist/dev.cjs
CHANGED
|
@@ -255,8 +255,7 @@ function createResource(pSource, pFetcher, pOptions) {
|
|
|
255
255
|
fetcher = pFetcher;
|
|
256
256
|
options = pOptions || {};
|
|
257
257
|
}
|
|
258
|
-
let
|
|
259
|
-
pr = null,
|
|
258
|
+
let pr = null,
|
|
260
259
|
initP = NO_INIT,
|
|
261
260
|
id = null,
|
|
262
261
|
loadedUnderTransition = false,
|
|
@@ -265,6 +264,7 @@ function createResource(pSource, pFetcher, pOptions) {
|
|
|
265
264
|
dynamic = typeof source === "function" && createMemo(source);
|
|
266
265
|
const contexts = new Set(),
|
|
267
266
|
[value, setValue] = (options.storage || createSignal)(options.initialValue),
|
|
267
|
+
[error, setError] = createSignal(undefined),
|
|
268
268
|
[track, trigger] = createSignal(undefined, {
|
|
269
269
|
equals: false
|
|
270
270
|
}),
|
|
@@ -274,7 +274,7 @@ function createResource(pSource, pFetcher, pOptions) {
|
|
|
274
274
|
let v;
|
|
275
275
|
if (options.ssrLoadFrom === "initial") initP = options.initialValue;else if (sharedConfig.load && (v = sharedConfig.load(id))) initP = v[0];
|
|
276
276
|
}
|
|
277
|
-
function loadEnd(p, v,
|
|
277
|
+
function loadEnd(p, v, error, key) {
|
|
278
278
|
if (pr === p) {
|
|
279
279
|
pr = null;
|
|
280
280
|
resolved = true;
|
|
@@ -291,25 +291,26 @@ function createResource(pSource, pFetcher, pOptions) {
|
|
|
291
291
|
Effects.push.apply(Effects, Transition.effects);
|
|
292
292
|
Transition.effects = [];
|
|
293
293
|
}
|
|
294
|
-
completeLoad(v,
|
|
294
|
+
completeLoad(v, error);
|
|
295
295
|
}, false);
|
|
296
|
-
} else completeLoad(v,
|
|
296
|
+
} else completeLoad(v, error);
|
|
297
297
|
}
|
|
298
298
|
return v;
|
|
299
299
|
}
|
|
300
|
-
function completeLoad(v,
|
|
301
|
-
!success && (err = castError(v));
|
|
300
|
+
function completeLoad(v, err) {
|
|
302
301
|
runUpdates(() => {
|
|
303
|
-
setValue(() => v);
|
|
304
|
-
|
|
302
|
+
if (!err) setValue(() => v);
|
|
303
|
+
setError(err);
|
|
304
|
+
setState(err ? "errored" : "ready");
|
|
305
305
|
for (const c of contexts.keys()) c.decrement();
|
|
306
306
|
contexts.clear();
|
|
307
307
|
}, false);
|
|
308
308
|
}
|
|
309
309
|
function read() {
|
|
310
310
|
const c = SuspenseContext && lookup(Owner, SuspenseContext.id),
|
|
311
|
-
v = value()
|
|
312
|
-
|
|
311
|
+
v = value(),
|
|
312
|
+
err = error();
|
|
313
|
+
if (err && !pr) throw err;
|
|
313
314
|
if (Listener && !Listener.user && c) {
|
|
314
315
|
createComputed(() => {
|
|
315
316
|
track();
|
|
@@ -326,11 +327,10 @@ function createResource(pSource, pFetcher, pOptions) {
|
|
|
326
327
|
function load(refetching = true) {
|
|
327
328
|
if (refetching !== false && scheduled) return;
|
|
328
329
|
scheduled = false;
|
|
329
|
-
err = undefined;
|
|
330
330
|
const lookup = dynamic ? dynamic() : source;
|
|
331
331
|
loadedUnderTransition = Transition && Transition.running;
|
|
332
332
|
if (lookup == null || lookup === false) {
|
|
333
|
-
loadEnd(pr, untrack(value)
|
|
333
|
+
loadEnd(pr, untrack(value));
|
|
334
334
|
return;
|
|
335
335
|
}
|
|
336
336
|
if (Transition && pr) Transition.promises.delete(pr);
|
|
@@ -339,7 +339,7 @@ function createResource(pSource, pFetcher, pOptions) {
|
|
|
339
339
|
refetching
|
|
340
340
|
}));
|
|
341
341
|
if (typeof p !== "object" || !("then" in p)) {
|
|
342
|
-
loadEnd(pr, p
|
|
342
|
+
loadEnd(pr, p);
|
|
343
343
|
return p;
|
|
344
344
|
}
|
|
345
345
|
pr = p;
|
|
@@ -349,27 +349,26 @@ function createResource(pSource, pFetcher, pOptions) {
|
|
|
349
349
|
setState(resolved ? "refreshing" : "pending");
|
|
350
350
|
trigger();
|
|
351
351
|
}, false);
|
|
352
|
-
return p.then(v => loadEnd(p, v,
|
|
352
|
+
return p.then(v => loadEnd(p, v, undefined, lookup), e => loadEnd(p, undefined, castError(e)));
|
|
353
353
|
}
|
|
354
354
|
Object.defineProperties(read, {
|
|
355
355
|
state: {
|
|
356
356
|
get: () => state()
|
|
357
357
|
},
|
|
358
|
+
error: {
|
|
359
|
+
get: () => error()
|
|
360
|
+
},
|
|
358
361
|
loading: {
|
|
359
362
|
get() {
|
|
360
363
|
const s = state();
|
|
361
364
|
return s === "pending" || s === "refreshing";
|
|
362
365
|
}
|
|
363
366
|
},
|
|
364
|
-
error: {
|
|
365
|
-
get() {
|
|
366
|
-
return state() === "errored" ? err : undefined;
|
|
367
|
-
}
|
|
368
|
-
},
|
|
369
367
|
latest: {
|
|
370
368
|
get() {
|
|
371
369
|
if (!resolved) return read();
|
|
372
|
-
|
|
370
|
+
const err = error();
|
|
371
|
+
if (err && !pr) throw err;
|
|
373
372
|
return value();
|
|
374
373
|
}
|
|
375
374
|
}
|
package/dist/dev.js
CHANGED
|
@@ -251,8 +251,7 @@ function createResource(pSource, pFetcher, pOptions) {
|
|
|
251
251
|
fetcher = pFetcher;
|
|
252
252
|
options = pOptions || {};
|
|
253
253
|
}
|
|
254
|
-
let
|
|
255
|
-
pr = null,
|
|
254
|
+
let pr = null,
|
|
256
255
|
initP = NO_INIT,
|
|
257
256
|
id = null,
|
|
258
257
|
loadedUnderTransition = false,
|
|
@@ -261,6 +260,7 @@ function createResource(pSource, pFetcher, pOptions) {
|
|
|
261
260
|
dynamic = typeof source === "function" && createMemo(source);
|
|
262
261
|
const contexts = new Set(),
|
|
263
262
|
[value, setValue] = (options.storage || createSignal)(options.initialValue),
|
|
263
|
+
[error, setError] = createSignal(undefined),
|
|
264
264
|
[track, trigger] = createSignal(undefined, {
|
|
265
265
|
equals: false
|
|
266
266
|
}),
|
|
@@ -270,7 +270,7 @@ function createResource(pSource, pFetcher, pOptions) {
|
|
|
270
270
|
let v;
|
|
271
271
|
if (options.ssrLoadFrom === "initial") initP = options.initialValue;else if (sharedConfig.load && (v = sharedConfig.load(id))) initP = v[0];
|
|
272
272
|
}
|
|
273
|
-
function loadEnd(p, v,
|
|
273
|
+
function loadEnd(p, v, error, key) {
|
|
274
274
|
if (pr === p) {
|
|
275
275
|
pr = null;
|
|
276
276
|
resolved = true;
|
|
@@ -287,25 +287,26 @@ function createResource(pSource, pFetcher, pOptions) {
|
|
|
287
287
|
Effects.push.apply(Effects, Transition.effects);
|
|
288
288
|
Transition.effects = [];
|
|
289
289
|
}
|
|
290
|
-
completeLoad(v,
|
|
290
|
+
completeLoad(v, error);
|
|
291
291
|
}, false);
|
|
292
|
-
} else completeLoad(v,
|
|
292
|
+
} else completeLoad(v, error);
|
|
293
293
|
}
|
|
294
294
|
return v;
|
|
295
295
|
}
|
|
296
|
-
function completeLoad(v,
|
|
297
|
-
!success && (err = castError(v));
|
|
296
|
+
function completeLoad(v, err) {
|
|
298
297
|
runUpdates(() => {
|
|
299
|
-
setValue(() => v);
|
|
300
|
-
|
|
298
|
+
if (!err) setValue(() => v);
|
|
299
|
+
setError(err);
|
|
300
|
+
setState(err ? "errored" : "ready");
|
|
301
301
|
for (const c of contexts.keys()) c.decrement();
|
|
302
302
|
contexts.clear();
|
|
303
303
|
}, false);
|
|
304
304
|
}
|
|
305
305
|
function read() {
|
|
306
306
|
const c = SuspenseContext && lookup(Owner, SuspenseContext.id),
|
|
307
|
-
v = value()
|
|
308
|
-
|
|
307
|
+
v = value(),
|
|
308
|
+
err = error();
|
|
309
|
+
if (err && !pr) throw err;
|
|
309
310
|
if (Listener && !Listener.user && c) {
|
|
310
311
|
createComputed(() => {
|
|
311
312
|
track();
|
|
@@ -322,11 +323,10 @@ function createResource(pSource, pFetcher, pOptions) {
|
|
|
322
323
|
function load(refetching = true) {
|
|
323
324
|
if (refetching !== false && scheduled) return;
|
|
324
325
|
scheduled = false;
|
|
325
|
-
err = undefined;
|
|
326
326
|
const lookup = dynamic ? dynamic() : source;
|
|
327
327
|
loadedUnderTransition = Transition && Transition.running;
|
|
328
328
|
if (lookup == null || lookup === false) {
|
|
329
|
-
loadEnd(pr, untrack(value)
|
|
329
|
+
loadEnd(pr, untrack(value));
|
|
330
330
|
return;
|
|
331
331
|
}
|
|
332
332
|
if (Transition && pr) Transition.promises.delete(pr);
|
|
@@ -335,7 +335,7 @@ function createResource(pSource, pFetcher, pOptions) {
|
|
|
335
335
|
refetching
|
|
336
336
|
}));
|
|
337
337
|
if (typeof p !== "object" || !("then" in p)) {
|
|
338
|
-
loadEnd(pr, p
|
|
338
|
+
loadEnd(pr, p);
|
|
339
339
|
return p;
|
|
340
340
|
}
|
|
341
341
|
pr = p;
|
|
@@ -345,27 +345,26 @@ function createResource(pSource, pFetcher, pOptions) {
|
|
|
345
345
|
setState(resolved ? "refreshing" : "pending");
|
|
346
346
|
trigger();
|
|
347
347
|
}, false);
|
|
348
|
-
return p.then(v => loadEnd(p, v,
|
|
348
|
+
return p.then(v => loadEnd(p, v, undefined, lookup), e => loadEnd(p, undefined, castError(e)));
|
|
349
349
|
}
|
|
350
350
|
Object.defineProperties(read, {
|
|
351
351
|
state: {
|
|
352
352
|
get: () => state()
|
|
353
353
|
},
|
|
354
|
+
error: {
|
|
355
|
+
get: () => error()
|
|
356
|
+
},
|
|
354
357
|
loading: {
|
|
355
358
|
get() {
|
|
356
359
|
const s = state();
|
|
357
360
|
return s === "pending" || s === "refreshing";
|
|
358
361
|
}
|
|
359
362
|
},
|
|
360
|
-
error: {
|
|
361
|
-
get() {
|
|
362
|
-
return state() === "errored" ? err : undefined;
|
|
363
|
-
}
|
|
364
|
-
},
|
|
365
363
|
latest: {
|
|
366
364
|
get() {
|
|
367
365
|
if (!resolved) return read();
|
|
368
|
-
|
|
366
|
+
const err = error();
|
|
367
|
+
if (err && !pr) throw err;
|
|
369
368
|
return value();
|
|
370
369
|
}
|
|
371
370
|
}
|
package/dist/server.cjs
CHANGED
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
const equalFn = (a, b) => a === b;
|
|
6
6
|
const $PROXY = Symbol("solid-proxy");
|
|
7
|
+
const $TRACK = Symbol("solid-track");
|
|
7
8
|
const $DEVCOMP = Symbol("solid-dev-component");
|
|
8
9
|
const DEV = {};
|
|
9
10
|
const ERROR = Symbol("error");
|
|
@@ -489,7 +490,6 @@ function lazy(fn) {
|
|
|
489
490
|
return p;
|
|
490
491
|
};
|
|
491
492
|
const contexts = new Set();
|
|
492
|
-
setTimeout(load);
|
|
493
493
|
const wrap = props => {
|
|
494
494
|
load();
|
|
495
495
|
const id = sharedConfig.context.id.slice(0, -1);
|
|
@@ -503,21 +503,22 @@ function lazy(fn) {
|
|
|
503
503
|
ctx.resources.set(id, track);
|
|
504
504
|
contexts.add(ctx);
|
|
505
505
|
}
|
|
506
|
-
if (sharedConfig.context.async)
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
506
|
+
if (sharedConfig.context.async) {
|
|
507
|
+
sharedConfig.context.block(p.then(() => {
|
|
508
|
+
track.loading = false;
|
|
509
|
+
notifySuspense(contexts);
|
|
510
|
+
}));
|
|
511
|
+
}
|
|
510
512
|
return "";
|
|
511
513
|
};
|
|
512
514
|
wrap.preload = load;
|
|
513
515
|
return wrap;
|
|
514
516
|
}
|
|
515
517
|
function suspenseComplete(c) {
|
|
516
|
-
if (c.complete) return true;
|
|
517
518
|
for (const r of c.resources.values()) {
|
|
518
519
|
if (r.loading) return false;
|
|
519
520
|
}
|
|
520
|
-
return
|
|
521
|
+
return true;
|
|
521
522
|
}
|
|
522
523
|
function notifySuspense(contexts) {
|
|
523
524
|
for (const c of contexts) {
|
|
@@ -556,8 +557,7 @@ function Suspense(props) {
|
|
|
556
557
|
if (suspenseComplete(value)) {
|
|
557
558
|
done(resolveSSRNode(res));
|
|
558
559
|
}
|
|
559
|
-
}
|
|
560
|
-
complete: false
|
|
560
|
+
}
|
|
561
561
|
});
|
|
562
562
|
function runSuspense() {
|
|
563
563
|
setHydrateContext({ ...ctx,
|
|
@@ -584,7 +584,11 @@ function Suspense(props) {
|
|
|
584
584
|
});
|
|
585
585
|
done = ctx.async ? ctx.registerFragment(id) : undefined;
|
|
586
586
|
if (ctx.async) {
|
|
587
|
-
setHydrateContext(
|
|
587
|
+
setHydrateContext({ ...ctx,
|
|
588
|
+
count: 0,
|
|
589
|
+
id: ctx.id + "0.f",
|
|
590
|
+
noHydrate: true
|
|
591
|
+
});
|
|
588
592
|
const res = {
|
|
589
593
|
t: `<span id="pl-${id}">${resolveSSRNode(props.fallback)}</span>`
|
|
590
594
|
};
|
|
@@ -601,6 +605,7 @@ function Suspense(props) {
|
|
|
601
605
|
|
|
602
606
|
exports.$DEVCOMP = $DEVCOMP;
|
|
603
607
|
exports.$PROXY = $PROXY;
|
|
608
|
+
exports.$TRACK = $TRACK;
|
|
604
609
|
exports.DEV = DEV;
|
|
605
610
|
exports.ErrorBoundary = ErrorBoundary;
|
|
606
611
|
exports.For = For;
|
package/dist/server.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
const equalFn = (a, b) => a === b;
|
|
2
2
|
const $PROXY = Symbol("solid-proxy");
|
|
3
|
+
const $TRACK = Symbol("solid-track");
|
|
3
4
|
const $DEVCOMP = Symbol("solid-dev-component");
|
|
4
5
|
const DEV = {};
|
|
5
6
|
const ERROR = Symbol("error");
|
|
@@ -485,7 +486,6 @@ function lazy(fn) {
|
|
|
485
486
|
return p;
|
|
486
487
|
};
|
|
487
488
|
const contexts = new Set();
|
|
488
|
-
setTimeout(load);
|
|
489
489
|
const wrap = props => {
|
|
490
490
|
load();
|
|
491
491
|
const id = sharedConfig.context.id.slice(0, -1);
|
|
@@ -499,21 +499,22 @@ function lazy(fn) {
|
|
|
499
499
|
ctx.resources.set(id, track);
|
|
500
500
|
contexts.add(ctx);
|
|
501
501
|
}
|
|
502
|
-
if (sharedConfig.context.async)
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
502
|
+
if (sharedConfig.context.async) {
|
|
503
|
+
sharedConfig.context.block(p.then(() => {
|
|
504
|
+
track.loading = false;
|
|
505
|
+
notifySuspense(contexts);
|
|
506
|
+
}));
|
|
507
|
+
}
|
|
506
508
|
return "";
|
|
507
509
|
};
|
|
508
510
|
wrap.preload = load;
|
|
509
511
|
return wrap;
|
|
510
512
|
}
|
|
511
513
|
function suspenseComplete(c) {
|
|
512
|
-
if (c.complete) return true;
|
|
513
514
|
for (const r of c.resources.values()) {
|
|
514
515
|
if (r.loading) return false;
|
|
515
516
|
}
|
|
516
|
-
return
|
|
517
|
+
return true;
|
|
517
518
|
}
|
|
518
519
|
function notifySuspense(contexts) {
|
|
519
520
|
for (const c of contexts) {
|
|
@@ -552,8 +553,7 @@ function Suspense(props) {
|
|
|
552
553
|
if (suspenseComplete(value)) {
|
|
553
554
|
done(resolveSSRNode(res));
|
|
554
555
|
}
|
|
555
|
-
}
|
|
556
|
-
complete: false
|
|
556
|
+
}
|
|
557
557
|
});
|
|
558
558
|
function runSuspense() {
|
|
559
559
|
setHydrateContext({ ...ctx,
|
|
@@ -580,7 +580,11 @@ function Suspense(props) {
|
|
|
580
580
|
});
|
|
581
581
|
done = ctx.async ? ctx.registerFragment(id) : undefined;
|
|
582
582
|
if (ctx.async) {
|
|
583
|
-
setHydrateContext(
|
|
583
|
+
setHydrateContext({ ...ctx,
|
|
584
|
+
count: 0,
|
|
585
|
+
id: ctx.id + "0.f",
|
|
586
|
+
noHydrate: true
|
|
587
|
+
});
|
|
584
588
|
const res = {
|
|
585
589
|
t: `<span id="pl-${id}">${resolveSSRNode(props.fallback)}</span>`
|
|
586
590
|
};
|
|
@@ -595,4 +599,4 @@ function Suspense(props) {
|
|
|
595
599
|
return props.fallback;
|
|
596
600
|
}
|
|
597
601
|
|
|
598
|
-
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, resetErrorBoundaries, runWithOwner, sharedConfig, splitProps, startTransition, untrack, useContext, useTransition };
|
|
602
|
+
export { $DEVCOMP, $PROXY, $TRACK, 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, resetErrorBoundaries, runWithOwner, sharedConfig, splitProps, startTransition, untrack, useContext, useTransition };
|
package/dist/solid.cjs
CHANGED
|
@@ -247,8 +247,7 @@ function createResource(pSource, pFetcher, pOptions) {
|
|
|
247
247
|
fetcher = pFetcher;
|
|
248
248
|
options = pOptions || {};
|
|
249
249
|
}
|
|
250
|
-
let
|
|
251
|
-
pr = null,
|
|
250
|
+
let pr = null,
|
|
252
251
|
initP = NO_INIT,
|
|
253
252
|
id = null,
|
|
254
253
|
loadedUnderTransition = false,
|
|
@@ -257,6 +256,7 @@ function createResource(pSource, pFetcher, pOptions) {
|
|
|
257
256
|
dynamic = typeof source === "function" && createMemo(source);
|
|
258
257
|
const contexts = new Set(),
|
|
259
258
|
[value, setValue] = (options.storage || createSignal)(options.initialValue),
|
|
259
|
+
[error, setError] = createSignal(undefined),
|
|
260
260
|
[track, trigger] = createSignal(undefined, {
|
|
261
261
|
equals: false
|
|
262
262
|
}),
|
|
@@ -266,7 +266,7 @@ function createResource(pSource, pFetcher, pOptions) {
|
|
|
266
266
|
let v;
|
|
267
267
|
if (options.ssrLoadFrom === "initial") initP = options.initialValue;else if (sharedConfig.load && (v = sharedConfig.load(id))) initP = v[0];
|
|
268
268
|
}
|
|
269
|
-
function loadEnd(p, v,
|
|
269
|
+
function loadEnd(p, v, error, key) {
|
|
270
270
|
if (pr === p) {
|
|
271
271
|
pr = null;
|
|
272
272
|
resolved = true;
|
|
@@ -283,25 +283,26 @@ function createResource(pSource, pFetcher, pOptions) {
|
|
|
283
283
|
Effects.push.apply(Effects, Transition.effects);
|
|
284
284
|
Transition.effects = [];
|
|
285
285
|
}
|
|
286
|
-
completeLoad(v,
|
|
286
|
+
completeLoad(v, error);
|
|
287
287
|
}, false);
|
|
288
|
-
} else completeLoad(v,
|
|
288
|
+
} else completeLoad(v, error);
|
|
289
289
|
}
|
|
290
290
|
return v;
|
|
291
291
|
}
|
|
292
|
-
function completeLoad(v,
|
|
293
|
-
!success && (err = castError(v));
|
|
292
|
+
function completeLoad(v, err) {
|
|
294
293
|
runUpdates(() => {
|
|
295
|
-
setValue(() => v);
|
|
296
|
-
|
|
294
|
+
if (!err) setValue(() => v);
|
|
295
|
+
setError(err);
|
|
296
|
+
setState(err ? "errored" : "ready");
|
|
297
297
|
for (const c of contexts.keys()) c.decrement();
|
|
298
298
|
contexts.clear();
|
|
299
299
|
}, false);
|
|
300
300
|
}
|
|
301
301
|
function read() {
|
|
302
302
|
const c = SuspenseContext && lookup(Owner, SuspenseContext.id),
|
|
303
|
-
v = value()
|
|
304
|
-
|
|
303
|
+
v = value(),
|
|
304
|
+
err = error();
|
|
305
|
+
if (err && !pr) throw err;
|
|
305
306
|
if (Listener && !Listener.user && c) {
|
|
306
307
|
createComputed(() => {
|
|
307
308
|
track();
|
|
@@ -318,11 +319,10 @@ function createResource(pSource, pFetcher, pOptions) {
|
|
|
318
319
|
function load(refetching = true) {
|
|
319
320
|
if (refetching !== false && scheduled) return;
|
|
320
321
|
scheduled = false;
|
|
321
|
-
err = undefined;
|
|
322
322
|
const lookup = dynamic ? dynamic() : source;
|
|
323
323
|
loadedUnderTransition = Transition && Transition.running;
|
|
324
324
|
if (lookup == null || lookup === false) {
|
|
325
|
-
loadEnd(pr, untrack(value)
|
|
325
|
+
loadEnd(pr, untrack(value));
|
|
326
326
|
return;
|
|
327
327
|
}
|
|
328
328
|
if (Transition && pr) Transition.promises.delete(pr);
|
|
@@ -331,7 +331,7 @@ function createResource(pSource, pFetcher, pOptions) {
|
|
|
331
331
|
refetching
|
|
332
332
|
}));
|
|
333
333
|
if (typeof p !== "object" || !("then" in p)) {
|
|
334
|
-
loadEnd(pr, p
|
|
334
|
+
loadEnd(pr, p);
|
|
335
335
|
return p;
|
|
336
336
|
}
|
|
337
337
|
pr = p;
|
|
@@ -341,27 +341,26 @@ function createResource(pSource, pFetcher, pOptions) {
|
|
|
341
341
|
setState(resolved ? "refreshing" : "pending");
|
|
342
342
|
trigger();
|
|
343
343
|
}, false);
|
|
344
|
-
return p.then(v => loadEnd(p, v,
|
|
344
|
+
return p.then(v => loadEnd(p, v, undefined, lookup), e => loadEnd(p, undefined, castError(e)));
|
|
345
345
|
}
|
|
346
346
|
Object.defineProperties(read, {
|
|
347
347
|
state: {
|
|
348
348
|
get: () => state()
|
|
349
349
|
},
|
|
350
|
+
error: {
|
|
351
|
+
get: () => error()
|
|
352
|
+
},
|
|
350
353
|
loading: {
|
|
351
354
|
get() {
|
|
352
355
|
const s = state();
|
|
353
356
|
return s === "pending" || s === "refreshing";
|
|
354
357
|
}
|
|
355
358
|
},
|
|
356
|
-
error: {
|
|
357
|
-
get() {
|
|
358
|
-
return state() === "errored" ? err : undefined;
|
|
359
|
-
}
|
|
360
|
-
},
|
|
361
359
|
latest: {
|
|
362
360
|
get() {
|
|
363
361
|
if (!resolved) return read();
|
|
364
|
-
|
|
362
|
+
const err = error();
|
|
363
|
+
if (err && !pr) throw err;
|
|
365
364
|
return value();
|
|
366
365
|
}
|
|
367
366
|
}
|
package/dist/solid.js
CHANGED
|
@@ -243,8 +243,7 @@ function createResource(pSource, pFetcher, pOptions) {
|
|
|
243
243
|
fetcher = pFetcher;
|
|
244
244
|
options = pOptions || {};
|
|
245
245
|
}
|
|
246
|
-
let
|
|
247
|
-
pr = null,
|
|
246
|
+
let pr = null,
|
|
248
247
|
initP = NO_INIT,
|
|
249
248
|
id = null,
|
|
250
249
|
loadedUnderTransition = false,
|
|
@@ -253,6 +252,7 @@ function createResource(pSource, pFetcher, pOptions) {
|
|
|
253
252
|
dynamic = typeof source === "function" && createMemo(source);
|
|
254
253
|
const contexts = new Set(),
|
|
255
254
|
[value, setValue] = (options.storage || createSignal)(options.initialValue),
|
|
255
|
+
[error, setError] = createSignal(undefined),
|
|
256
256
|
[track, trigger] = createSignal(undefined, {
|
|
257
257
|
equals: false
|
|
258
258
|
}),
|
|
@@ -262,7 +262,7 @@ function createResource(pSource, pFetcher, pOptions) {
|
|
|
262
262
|
let v;
|
|
263
263
|
if (options.ssrLoadFrom === "initial") initP = options.initialValue;else if (sharedConfig.load && (v = sharedConfig.load(id))) initP = v[0];
|
|
264
264
|
}
|
|
265
|
-
function loadEnd(p, v,
|
|
265
|
+
function loadEnd(p, v, error, key) {
|
|
266
266
|
if (pr === p) {
|
|
267
267
|
pr = null;
|
|
268
268
|
resolved = true;
|
|
@@ -279,25 +279,26 @@ function createResource(pSource, pFetcher, pOptions) {
|
|
|
279
279
|
Effects.push.apply(Effects, Transition.effects);
|
|
280
280
|
Transition.effects = [];
|
|
281
281
|
}
|
|
282
|
-
completeLoad(v,
|
|
282
|
+
completeLoad(v, error);
|
|
283
283
|
}, false);
|
|
284
|
-
} else completeLoad(v,
|
|
284
|
+
} else completeLoad(v, error);
|
|
285
285
|
}
|
|
286
286
|
return v;
|
|
287
287
|
}
|
|
288
|
-
function completeLoad(v,
|
|
289
|
-
!success && (err = castError(v));
|
|
288
|
+
function completeLoad(v, err) {
|
|
290
289
|
runUpdates(() => {
|
|
291
|
-
setValue(() => v);
|
|
292
|
-
|
|
290
|
+
if (!err) setValue(() => v);
|
|
291
|
+
setError(err);
|
|
292
|
+
setState(err ? "errored" : "ready");
|
|
293
293
|
for (const c of contexts.keys()) c.decrement();
|
|
294
294
|
contexts.clear();
|
|
295
295
|
}, false);
|
|
296
296
|
}
|
|
297
297
|
function read() {
|
|
298
298
|
const c = SuspenseContext && lookup(Owner, SuspenseContext.id),
|
|
299
|
-
v = value()
|
|
300
|
-
|
|
299
|
+
v = value(),
|
|
300
|
+
err = error();
|
|
301
|
+
if (err && !pr) throw err;
|
|
301
302
|
if (Listener && !Listener.user && c) {
|
|
302
303
|
createComputed(() => {
|
|
303
304
|
track();
|
|
@@ -314,11 +315,10 @@ function createResource(pSource, pFetcher, pOptions) {
|
|
|
314
315
|
function load(refetching = true) {
|
|
315
316
|
if (refetching !== false && scheduled) return;
|
|
316
317
|
scheduled = false;
|
|
317
|
-
err = undefined;
|
|
318
318
|
const lookup = dynamic ? dynamic() : source;
|
|
319
319
|
loadedUnderTransition = Transition && Transition.running;
|
|
320
320
|
if (lookup == null || lookup === false) {
|
|
321
|
-
loadEnd(pr, untrack(value)
|
|
321
|
+
loadEnd(pr, untrack(value));
|
|
322
322
|
return;
|
|
323
323
|
}
|
|
324
324
|
if (Transition && pr) Transition.promises.delete(pr);
|
|
@@ -327,7 +327,7 @@ function createResource(pSource, pFetcher, pOptions) {
|
|
|
327
327
|
refetching
|
|
328
328
|
}));
|
|
329
329
|
if (typeof p !== "object" || !("then" in p)) {
|
|
330
|
-
loadEnd(pr, p
|
|
330
|
+
loadEnd(pr, p);
|
|
331
331
|
return p;
|
|
332
332
|
}
|
|
333
333
|
pr = p;
|
|
@@ -337,27 +337,26 @@ function createResource(pSource, pFetcher, pOptions) {
|
|
|
337
337
|
setState(resolved ? "refreshing" : "pending");
|
|
338
338
|
trigger();
|
|
339
339
|
}, false);
|
|
340
|
-
return p.then(v => loadEnd(p, v,
|
|
340
|
+
return p.then(v => loadEnd(p, v, undefined, lookup), e => loadEnd(p, undefined, castError(e)));
|
|
341
341
|
}
|
|
342
342
|
Object.defineProperties(read, {
|
|
343
343
|
state: {
|
|
344
344
|
get: () => state()
|
|
345
345
|
},
|
|
346
|
+
error: {
|
|
347
|
+
get: () => error()
|
|
348
|
+
},
|
|
346
349
|
loading: {
|
|
347
350
|
get() {
|
|
348
351
|
const s = state();
|
|
349
352
|
return s === "pending" || s === "refreshing";
|
|
350
353
|
}
|
|
351
354
|
},
|
|
352
|
-
error: {
|
|
353
|
-
get() {
|
|
354
|
-
return state() === "errored" ? err : undefined;
|
|
355
|
-
}
|
|
356
|
-
},
|
|
357
355
|
latest: {
|
|
358
356
|
get() {
|
|
359
357
|
if (!resolved) return read();
|
|
360
|
-
|
|
358
|
+
const err = error();
|
|
359
|
+
if (err && !pr) throw err;
|
|
361
360
|
return value();
|
|
362
361
|
}
|
|
363
362
|
}
|