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/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((options || {}).initialValue),
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, s));
309
- initP = null;
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, cb) {
473
+ function startTransition(fn) {
460
474
  if (Transition && Transition.running) {
461
475
  fn();
462
- cb && Transition.cb.push(cb);
463
- return;
476
+ return Transition.done;
464
477
  }
465
- queueMicrotask(() => {
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
- cb && Transition.cb.push(cb);
477
- Transition.running = true;
489
+ t.done ||= new Promise(res => t.resolve = res);
490
+ t.running = true;
478
491
  }
479
492
  batch(fn);
480
- if (!Scheduler && !SuspenseContext && cb) cb();
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, () => inTransition.dispose());
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 cbs;
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
- cbs = Transition.cb;
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 (cbs) cbs.forEach(cb => cb());
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
- waitingHydration,
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
- const p = sharedConfig.load(key);
1411
+ p = sharedConfig.load(key);
1397
1412
  if (p) {
1398
- const [s, set] = createSignal(undefined, {
1399
- equals: false
1400
- });
1401
- flicker = s;
1402
- p.then(err => {
1403
- if (error = err) return set();
1404
- sharedConfig.gather(key);
1405
- waitingHydration = true;
1406
- setHydrateContext(ctx);
1407
- set();
1408
- setHydrateContext();
1409
- waitingHydration = false;
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 || waitingHydration) && visibleContent) {
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 (sharedConfig.context) setHydrateContext({
1442
- id: sharedConfig.context.id + "f",
1443
- count: 0
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((options || {}).initialValue),
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, s));
305
- initP = null;
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, cb) {
469
+ function startTransition(fn) {
456
470
  if (Transition && Transition.running) {
457
471
  fn();
458
- cb && Transition.cb.push(cb);
459
- return;
472
+ return Transition.done;
460
473
  }
461
- queueMicrotask(() => {
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
- cb && Transition.cb.push(cb);
473
- Transition.running = true;
485
+ t.done ||= new Promise(res => t.resolve = res);
486
+ t.running = true;
474
487
  }
475
488
  batch(fn);
476
- if (!Scheduler && !SuspenseContext && cb) cb();
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, () => inTransition.dispose());
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 cbs;
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
- cbs = Transition.cb;
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 (cbs) cbs.forEach(cb => cb());
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
- waitingHydration,
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
- const p = sharedConfig.load(key);
1407
+ p = sharedConfig.load(key);
1393
1408
  if (p) {
1394
- const [s, set] = createSignal(undefined, {
1395
- equals: false
1396
- });
1397
- flicker = s;
1398
- p.then(err => {
1399
- if (error = err) return set();
1400
- sharedConfig.gather(key);
1401
- waitingHydration = true;
1402
- setHydrateContext(ctx);
1403
- set();
1404
- setHydrateContext();
1405
- waitingHydration = false;
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 || waitingHydration) && visibleContent) {
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 (sharedConfig.context) setHydrateContext({
1438
- id: sharedConfig.context.id + "f",
1439
- count: 0
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-beta.8",
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": "d63c43c95c224cb4c4dc4f5c8681b9be3c62f1c9"
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
- cb: (() => void)[];
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, getPrev: Accessor<T>) => T | Promise<T>;
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
- * getPrev: Accessor<T>
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
- export declare function startTransition(fn: () => void, cb?: () => void): void;
352
- export declare type Transition = [Accessor<boolean>, (fn: () => void, cb?: () => void) => void];
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(): [
@@ -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;