solid-js 1.3.0-beta.1 → 1.3.0-beta.10

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.js CHANGED
@@ -145,6 +145,7 @@ const [transPending, setTransPending] = /*@__PURE__*/createSignal(false);
145
145
  var Owner = null;
146
146
  let Transition = null;
147
147
  let Scheduler = null;
148
+ let ExternalSourceFactory = null;
148
149
  let Listener = null;
149
150
  let Pending = null;
150
151
  let Updates = null;
@@ -228,6 +229,9 @@ function createResource(source, fetcher, options) {
228
229
  fetcher = source;
229
230
  source = true;
230
231
  }
232
+ Resources || (Resources = new Set());
233
+ Resources.add(load);
234
+ onCleanup(() => Resources.delete(load));
231
235
  const contexts = new Set(),
232
236
  [s, set] = createSignal((options || {}).initialValue),
233
237
  [track, trigger] = createSignal(undefined, {
@@ -289,7 +293,7 @@ function createResource(source, fetcher, options) {
289
293
  }
290
294
  return v;
291
295
  }
292
- function load() {
296
+ function load(refetching = true) {
293
297
  setError(err = undefined);
294
298
  const lookup = dynamic ? source() : source;
295
299
  loadedUnderTransition = Transition && Transition.running;
@@ -298,7 +302,10 @@ function createResource(source, fetcher, options) {
298
302
  return;
299
303
  }
300
304
  if (Transition && pr) Transition.promises.delete(pr);
301
- const p = initP || untrack(() => fetcher(lookup, s));
305
+ const p = initP || untrack(() => fetcher(lookup, {
306
+ value: s(),
307
+ refetching
308
+ }));
302
309
  initP = null;
303
310
  if (typeof p !== "object" || !("then" in p)) {
304
311
  loadEnd(pr, p);
@@ -323,12 +330,16 @@ function createResource(source, fetcher, options) {
323
330
  }
324
331
  }
325
332
  });
326
- if (dynamic) createComputed(load);else load();
333
+ if (dynamic) createComputed(() => load(false));else load(false);
327
334
  return [read, {
328
335
  refetch: load,
329
336
  mutate: set
330
337
  }];
331
338
  }
339
+ let Resources;
340
+ function refetchResources(info) {
341
+ Resources && Resources.forEach(fn => fn(info));
342
+ }
332
343
  function createDeferred(source, options) {
333
344
  let t,
334
345
  timeout = options ? options.timeoutMs : undefined;
@@ -499,6 +510,24 @@ let SuspenseContext;
499
510
  function getSuspenseContext() {
500
511
  return SuspenseContext || (SuspenseContext = createContext({}));
501
512
  }
513
+ function enableExternalSource(factory) {
514
+ if (ExternalSourceFactory) {
515
+ const oldFactory = ExternalSourceFactory;
516
+ ExternalSourceFactory = (fn, trigger) => {
517
+ const oldSource = oldFactory(fn, trigger);
518
+ const source = factory(x => oldSource.track(x), trigger);
519
+ return {
520
+ track: x => source.track(x),
521
+ dispose() {
522
+ source.dispose();
523
+ oldSource.dispose();
524
+ }
525
+ };
526
+ };
527
+ } else {
528
+ ExternalSourceFactory = factory;
529
+ }
530
+ }
502
531
  function readSignal() {
503
532
  const runningTransition = Transition && Transition.running;
504
533
  if (this.sources && (!runningTransition && this.state || runningTransition && this.tState)) {
@@ -626,6 +655,19 @@ function createComputation(fn, init, pure, state = STALE, options) {
626
655
  if (!Owner.owned) Owner.owned = [c];else Owner.owned.push(c);
627
656
  }
628
657
  }
658
+ if (ExternalSourceFactory) {
659
+ const [track, trigger] = createSignal(undefined, {
660
+ equals: false
661
+ });
662
+ const ordinary = ExternalSourceFactory(c.fn, trigger);
663
+ onCleanup(() => ordinary.dispose());
664
+ const triggerInTransition = () => startTransition(trigger, () => inTransition.dispose());
665
+ const inTransition = ExternalSourceFactory(c.fn, triggerInTransition);
666
+ c.fn = x => {
667
+ track();
668
+ return Transition && Transition.running ? inTransition.track(x) : ordinary.track(x);
669
+ };
670
+ }
629
671
  return c;
630
672
  }
631
673
  function runTop(node) {
@@ -1059,13 +1101,19 @@ function indexArray(list, mapFn, options = {}) {
1059
1101
  };
1060
1102
  }
1061
1103
 
1104
+ let hydrationEnabled = false;
1105
+ function enableHydration() {
1106
+ hydrationEnabled = true;
1107
+ }
1062
1108
  function createComponent(Comp, props) {
1063
- if (sharedConfig.context) {
1064
- const c = sharedConfig.context;
1065
- setHydrateContext(nextHydrateContext());
1066
- const r = untrack(() => Comp(props));
1067
- setHydrateContext(c);
1068
- return r;
1109
+ if (hydrationEnabled) {
1110
+ if (sharedConfig.context) {
1111
+ const c = sharedConfig.context;
1112
+ setHydrateContext(nextHydrateContext());
1113
+ const r = untrack(() => Comp(props));
1114
+ setHydrateContext(c);
1115
+ return r;
1116
+ }
1069
1117
  }
1070
1118
  return untrack(() => Comp(props));
1071
1119
  }
@@ -1154,19 +1202,20 @@ function splitProps(props, ...keys) {
1154
1202
  }
1155
1203
  function lazy(fn) {
1156
1204
  let comp;
1205
+ let p;
1157
1206
  const wrap = props => {
1158
1207
  const ctx = sharedConfig.context;
1159
1208
  if (ctx) {
1160
1209
  ctx.count++;
1161
1210
  const [s, set] = createSignal();
1162
- fn().then(mod => {
1211
+ (p || (p = fn())).then(mod => {
1163
1212
  setHydrateContext(ctx);
1164
1213
  set(() => mod.default);
1165
- setHydrateContext(undefined);
1214
+ setHydrateContext();
1166
1215
  });
1167
1216
  comp = s;
1168
1217
  } else if (!comp) {
1169
- const [s] = createResource(() => fn().then(mod => mod.default));
1218
+ const [s] = createResource(() => (p || (p = fn())).then(mod => mod.default));
1170
1219
  comp = s;
1171
1220
  } else {
1172
1221
  const c = comp();
@@ -1182,7 +1231,7 @@ function lazy(fn) {
1182
1231
  return r;
1183
1232
  }));
1184
1233
  };
1185
- wrap.preload = () => comp || fn().then(mod => comp = () => mod.default);
1234
+ wrap.preload = () => p || ((p = fn()).then(mod => comp = () => mod.default), p);
1186
1235
  return wrap;
1187
1236
  }
1188
1237
  let counter = 0;
@@ -1242,7 +1291,11 @@ function Match(props) {
1242
1291
  return props;
1243
1292
  }
1244
1293
  function ErrorBoundary(props) {
1245
- const [errored, setErrored] = createSignal();
1294
+ let err = undefined;
1295
+ if (sharedConfig.context && sharedConfig.load) {
1296
+ err = sharedConfig.load(sharedConfig.context.id + sharedConfig.context.count);
1297
+ }
1298
+ const [errored, setErrored] = createSignal(err);
1246
1299
  let e;
1247
1300
  return createMemo(() => {
1248
1301
  if ((e = errored()) != null) {
@@ -1325,8 +1378,9 @@ function Suspense(props) {
1325
1378
  showContent,
1326
1379
  showFallback,
1327
1380
  ctx,
1328
- waitingHydration,
1329
- flicker;
1381
+ p,
1382
+ flicker,
1383
+ error;
1330
1384
  const [inFallback, setFallback] = createSignal(false),
1331
1385
  SuspenseContext = getSuspenseContext(),
1332
1386
  store = {
@@ -1341,21 +1395,21 @@ function Suspense(props) {
1341
1395
  resolved: false
1342
1396
  },
1343
1397
  owner = getOwner();
1344
- if (sharedConfig.context && sharedConfig.load) {
1398
+ if (sharedConfig.context) {
1345
1399
  const key = sharedConfig.context.id + sharedConfig.context.count;
1346
- const p = sharedConfig.load(key);
1347
- if (p) {
1400
+ p = sharedConfig.load(key);
1401
+ if (p && typeof p === "object") {
1348
1402
  const [s, set] = createSignal(undefined, {
1349
1403
  equals: false
1350
1404
  });
1351
1405
  flicker = s;
1352
- p.then(() => {
1406
+ p.then(err => {
1407
+ if (error = err) return set();
1353
1408
  sharedConfig.gather(key);
1354
- waitingHydration = true;
1355
1409
  setHydrateContext(ctx);
1356
1410
  set();
1357
- setHydrateContext(undefined);
1358
- waitingHydration = false;
1411
+ setHydrateContext();
1412
+ p = undefined;
1359
1413
  });
1360
1414
  }
1361
1415
  }
@@ -1367,18 +1421,20 @@ function Suspense(props) {
1367
1421
  value: store,
1368
1422
  get children() {
1369
1423
  return createMemo(() => {
1424
+ if (error) throw error;
1425
+ ctx = sharedConfig.context;
1370
1426
  if (flicker) {
1371
- ctx = sharedConfig.context;
1372
1427
  flicker();
1373
1428
  return flicker = undefined;
1374
1429
  }
1430
+ if (ctx && p === undefined) setHydrateContext();
1375
1431
  const rendered = untrack(() => props.children);
1376
1432
  return createMemo(() => {
1377
1433
  const inFallback = store.inFallback(),
1378
1434
  visibleContent = showContent ? showContent() : true,
1379
1435
  visibleFallback = showFallback ? showFallback() : true;
1380
1436
  dispose && dispose();
1381
- if ((!inFallback || waitingHydration) && visibleContent) {
1437
+ if ((!inFallback || p !== undefined) && visibleContent) {
1382
1438
  store.resolved = true;
1383
1439
  resumeEffects(store.effects);
1384
1440
  return rendered;
@@ -1386,7 +1442,13 @@ function Suspense(props) {
1386
1442
  if (!visibleFallback) return;
1387
1443
  return createRoot(disposer => {
1388
1444
  dispose = disposer;
1389
- if (sharedConfig.context) sharedConfig.context.count = 0;
1445
+ if (ctx) {
1446
+ setHydrateContext({
1447
+ id: ctx.id + "f",
1448
+ count: 0
1449
+ });
1450
+ ctx = undefined;
1451
+ }
1390
1452
  return props.fallback;
1391
1453
  }, owner);
1392
1454
  });
@@ -1397,4 +1459,4 @@ function Suspense(props) {
1397
1459
 
1398
1460
  let DEV;
1399
1461
 
1400
- 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, enableScheduling, equalFn, from, getListener, getOwner, indexArray, lazy, mapArray, mergeProps, observable, on, onCleanup, onError, onMount, requestCallback, runWithOwner, sharedConfig, splitProps, startTransition, untrack, useContext, useTransition };
1462
+ 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,10 +1,10 @@
1
1
  {
2
2
  "name": "solid-js",
3
3
  "description": "A declarative JavaScript library for building user interfaces.",
4
- "version": "1.3.0-beta.1",
4
+ "version": "1.3.0-beta.10",
5
5
  "author": "Ryan Carniato",
6
6
  "license": "MIT",
7
- "homepage": "https://github.com/solidjs/solid#readme",
7
+ "homepage": "https://solidjs.com",
8
8
  "repository": {
9
9
  "type": "git",
10
10
  "url": "https://github.com/solidjs/solid"
@@ -36,11 +36,11 @@
36
36
  ],
37
37
  "exports": {
38
38
  ".": {
39
- "development": {
40
- "import": "./dist/dev.js",
41
- "require": "./dist/dev.cjs"
42
- },
43
39
  "browser": {
40
+ "development": {
41
+ "import": "./dist/dev.js",
42
+ "require": "./dist/dev.cjs"
43
+ },
44
44
  "import": "./dist/solid.js",
45
45
  "require": "./dist/solid.cjs"
46
46
  },
@@ -48,16 +48,20 @@
48
48
  "import": "./dist/server.js",
49
49
  "require": "./dist/server.cjs"
50
50
  },
51
+ "development": {
52
+ "import": "./dist/dev.js",
53
+ "require": "./dist/dev.cjs"
54
+ },
51
55
  "import": "./dist/solid.js",
52
56
  "require": "./dist/solid.cjs"
53
57
  },
54
58
  "./dist/*": "./dist/*",
55
59
  "./store": {
56
- "development": {
57
- "import": "./store/dist/dev.js",
58
- "require": "./store/dist/dev.cjs"
59
- },
60
60
  "browser": {
61
+ "development": {
62
+ "import": "./store/dist/dev.js",
63
+ "require": "./store/dist/dev.cjs"
64
+ },
61
65
  "import": "./store/dist/store.js",
62
66
  "require": "./store/dist/store.cjs"
63
67
  },
@@ -65,16 +69,20 @@
65
69
  "import": "./store/dist/server.js",
66
70
  "require": "./store/dist/server.cjs"
67
71
  },
72
+ "development": {
73
+ "import": "./store/dist/dev.js",
74
+ "require": "./store/dist/dev.cjs"
75
+ },
68
76
  "import": "./store/dist/store.js",
69
77
  "require": "./store/dist/store.cjs"
70
78
  },
71
79
  "./store/dist/*": "./store/dist/*",
72
80
  "./web": {
73
- "development": {
74
- "import": "./web/dist/dev.js",
75
- "require": "./web/dist/dev.cjs"
76
- },
77
81
  "browser": {
82
+ "development": {
83
+ "import": "./web/dist/dev.js",
84
+ "require": "./web/dist/dev.cjs"
85
+ },
78
86
  "import": "./web/dist/web.js",
79
87
  "require": "./web/dist/web.cjs"
80
88
  },
@@ -82,6 +90,10 @@
82
90
  "import": "./web/dist/server.js",
83
91
  "require": "./web/dist/server.cjs"
84
92
  },
93
+ "development": {
94
+ "import": "./web/dist/dev.js",
95
+ "require": "./web/dist/dev.cjs"
96
+ },
85
97
  "import": "./web/dist/web.js",
86
98
  "require": "./web/dist/web.cjs"
87
99
  },
@@ -132,5 +144,5 @@
132
144
  "compiler",
133
145
  "performance"
134
146
  ],
135
- "gitHead": "148c4c7d4f55842ec606364a972ce9abeb46c324"
147
+ "gitHead": "58fd1f992d5ce333a8803cc6880cb431155fda5c"
136
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, 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";
@@ -5,6 +5,7 @@ export declare const $PROXY: unique symbol;
5
5
  export declare const NOTPENDING: {};
6
6
  export declare var Owner: Owner | null;
7
7
  export declare let Transition: TransitionState | null;
8
+ declare let ExternalSourceFactory: ExternalSourceFactory | null;
8
9
  declare global {
9
10
  var _$afterUpdate: () => void;
10
11
  }
@@ -50,6 +51,11 @@ export interface TransitionState {
50
51
  running: boolean;
51
52
  cb: (() => void)[];
52
53
  }
54
+ declare type ExternalSourceFactory = <Prev, Next extends Prev = Prev>(fn: EffectFunction<Prev, Next>, trigger: () => void) => ExternalSource;
55
+ export interface ExternalSource {
56
+ track: EffectFunction<any, any>;
57
+ dispose: () => void;
58
+ }
53
59
  export declare type RootFunction<T> = (dispose: () => void) => T;
54
60
  /**
55
61
  * Creates a new non-tracked reactive context that doesn't auto-dispose
@@ -179,11 +185,15 @@ export interface Resource<T> extends Accessor<T> {
179
185
  }
180
186
  export declare type ResourceActions<T> = {
181
187
  mutate: Setter<T>;
182
- refetch: () => void;
188
+ refetch: (info?: unknown) => void;
183
189
  };
184
190
  export declare type ResourceReturn<T> = [Resource<T>, ResourceActions<T>];
185
191
  export declare type ResourceSource<S> = S | false | null | (() => S | false | null);
186
- export declare type ResourceFetcher<S, T> = (k: S, getPrev: Accessor<T>) => T | Promise<T>;
192
+ export declare type ResourceFetcher<S, T> = (k: S, info: ResourceFetcherInfo<T>) => T | Promise<T>;
193
+ export declare type ResourceFetcherInfo<T> = {
194
+ value: T | undefined;
195
+ refetching?: unknown;
196
+ };
187
197
  export declare type ResourceOptions<T> = T extends undefined ? {
188
198
  initialValue?: T;
189
199
  name?: string;
@@ -194,14 +204,14 @@ export declare type ResourceOptions<T> = T extends undefined ? {
194
204
  /**
195
205
  * Creates a resource that wraps a repeated promise in a reactive pattern:
196
206
  * ```typescript
197
- * const [resource, { mutate, refetch }] = crateResource(source, fetcher, options);
207
+ * const [resource, { mutate, refetch }] = createResource(source, fetcher, options);
198
208
  * ```
199
209
  * @param source - reactive data function to toggle the request, optional
200
210
  * @param fetcher - function that receives the source (or true) and an accessor for the last or initial value and returns a value or a Promise with the value:
201
211
  * ```typescript
202
212
  * const fetcher: ResourceFetcher<S, T, > = (
203
213
  * sourceOutput: ReturnValue<typeof source>,
204
- * getPrev: Accessor<T>
214
+ * info: ResourceFetcherInfo<T>
205
215
  * ) => T | Promise<T>;
206
216
  * ```
207
217
  * @param options - an optional object with the initialValue and the name (for debugging purposes)
@@ -220,6 +230,7 @@ export declare function createResource<T, S = true>(fetcher: ResourceFetcher<S,
220
230
  export declare function createResource<T, S = true>(fetcher: ResourceFetcher<S, T>, options: ResourceOptions<T>): ResourceReturn<T>;
221
231
  export declare function createResource<T, S>(source: ResourceSource<S>, fetcher: ResourceFetcher<S, T>, options?: ResourceOptions<undefined>): ResourceReturn<T | undefined>;
222
232
  export declare function createResource<T, S>(source: ResourceSource<S>, fetcher: ResourceFetcher<S, T>, options: ResourceOptions<T>): ResourceReturn<T>;
233
+ export declare function refetchResources(info?: unknown): void;
223
234
  export interface DeferredOptions<T> {
224
235
  equals?: false | ((prev: T, next: T) => boolean);
225
236
  name?: string;
@@ -342,6 +353,12 @@ export declare function getListener(): Computation<any, any> | null;
342
353
  export declare function getOwner(): Owner | null;
343
354
  export declare function runWithOwner(o: Owner, fn: () => any): any;
344
355
  export declare function enableScheduling(scheduler?: typeof requestCallback): void;
356
+ /**
357
+ * ```typescript
358
+ * export function startTransition(fn: () => void, cb?: () => void) => void
359
+ *
360
+ * @description https://www.solidjs.com/docs/latest/api#usetransition
361
+ */
345
362
  export declare function startTransition(fn: () => void, cb?: () => void): void;
346
363
  export declare type Transition = [Accessor<boolean>, (fn: () => void, cb?: () => void) => void];
347
364
  /**
@@ -423,6 +440,7 @@ declare type SuspenseContext = Context<SuspenseContextType> & {
423
440
  };
424
441
  declare let SuspenseContext: SuspenseContext;
425
442
  export declare function getSuspenseContext(): SuspenseContext;
443
+ export declare function enableExternalSource(factory: ExternalSourceFactory): void;
426
444
  export declare function readSignal(this: SignalState<any> | Memo<any>): any;
427
445
  export declare function writeSignal(node: SignalState<any> | Memo<any>, value: any, isComp?: boolean): any;
428
446
  export {};
@@ -1,4 +1,5 @@
1
1
  import type { JSX } from "../jsx";
2
+ export declare function enableHydration(): void;
2
3
  export declare type PropsWithChildren<P = {}> = P & {
3
4
  children?: JSX.Element;
4
5
  };
@@ -36,7 +37,9 @@ export declare function splitProps<T extends object, K1 extends keyof T, K2 exte
36
37
  export declare function lazy<T extends Component<any>>(fn: () => Promise<{
37
38
  default: T;
38
39
  }>): T & {
39
- preload: () => void;
40
+ preload: () => Promise<{
41
+ default: T;
42
+ }>;
40
43
  };
41
44
  export declare function createUniqueId(): string;
42
45
  export {};
@@ -1,3 +1,3 @@
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 } from "./reactive";
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
2
  export { mergeProps, splitProps, createComponent, For, Index, Show, Switch, Match, ErrorBoundary, Suspense, SuspenseList, createResource, enableScheduling, startTransition, useTransition, createUniqueId, lazy, sharedConfig } from "./rendering";
3
3
  export type { Component, Resource } from "./rendering";
@@ -70,4 +70,5 @@ export declare function from<T>(producer: ((setter: Setter<T>) => () => void) |
70
70
  unsubscribe: () => void;
71
71
  };
72
72
  }): Accessor<T>;
73
+ export declare function enableExternalSource(factory: any): void;
73
74
  export {};
@@ -56,9 +56,9 @@ declare type MatchProps<T> = {
56
56
  };
57
57
  export declare function Match<T>(props: MatchProps<T>): MatchProps<T>;
58
58
  export declare function ErrorBoundary(props: {
59
- fallback: string | ((err: any) => string);
59
+ fallback: string | ((err: any, reset: () => void) => string);
60
60
  children: string;
61
- }): string;
61
+ }): any;
62
62
  export interface Resource<T> {
63
63
  (): T | undefined;
64
64
  loading: boolean;
@@ -82,6 +82,7 @@ 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;
@@ -91,10 +92,10 @@ export declare function useTransition(): [() => boolean, (fn: () => any) => void
91
92
  declare type HydrationContext = {
92
93
  id: string;
93
94
  count: number;
94
- writeResource?: (id: string, v: Promise<any>) => void;
95
+ writeResource?: (id: string, v: Promise<any> | any, error?: boolean) => void;
95
96
  resources: Record<string, any>;
96
97
  suspense: Record<string, SuspenseContextType>;
97
- registerFragment: (v: string) => (v?: string) => void;
98
+ registerFragment: (v: string) => (v?: string, err?: any) => boolean;
98
99
  async?: boolean;
99
100
  streaming?: boolean;
100
101
  noHydrate: boolean;
@@ -105,7 +106,7 @@ export declare function SuspenseList(props: {
105
106
  tail?: "collapsed" | "hidden";
106
107
  }): string;
107
108
  export declare function Suspense(props: {
108
- fallback: string;
109
+ fallback?: string;
109
110
  children: string;
110
111
  }): any;
111
112
  export {};
package/web/dist/dev.cjs CHANGED
@@ -98,7 +98,7 @@ function render(code, element, init) {
98
98
  let disposer;
99
99
  solidJs.createRoot(dispose => {
100
100
  disposer = dispose;
101
- insert(element, code(), element.firstChild ? null : undefined, init);
101
+ element === document ? code() : insert(element, code(), element.firstChild ? null : undefined, init);
102
102
  });
103
103
  return () => {
104
104
  disposer();
@@ -218,22 +218,17 @@ function assign(node, props, isSVG, skipChildren, prevProps = {}) {
218
218
  prevProps[prop] = assignProp(node, prop, value, prevProps[prop], isSVG);
219
219
  }
220
220
  }
221
- function hydrate(code, element) {
222
- if (!globalThis._$HY.sync) {
223
- let dispose;
224
- globalThis._$HY.queue.push(() => dispose = hydrate(code, element));
225
- return () => dispose();
226
- }
221
+ function hydrate$1(code, element, options = {}) {
227
222
  solidJs.sharedConfig.completed = globalThis._$HY.completed;
228
223
  solidJs.sharedConfig.events = globalThis._$HY.events;
229
224
  solidJs.sharedConfig.load = globalThis._$HY.load;
230
225
  solidJs.sharedConfig.gather = root => gatherHydratable(element, root);
231
226
  solidJs.sharedConfig.registry = new Map();
232
227
  solidJs.sharedConfig.context = {
233
- id: "",
228
+ id: options.renderId || "",
234
229
  count: 0
235
230
  };
236
- gatherHydratable(element);
231
+ gatherHydratable(element, options.renderId);
237
232
  const dispose = render(code, element, [...element.childNodes]);
238
233
  solidJs.sharedConfig.context = null;
239
234
  return dispose;
@@ -387,8 +382,8 @@ function insertExpression(parent, value, current, marker, unwrapArray) {
387
382
  return () => current;
388
383
  }
389
384
  if (solidJs.sharedConfig.context && current && current.length) {
390
- for (let i; i < array.length; i++) {
391
- if (array[i].parentNode) return array;
385
+ for (let i = 0; i < array.length; i++) {
386
+ if (array[i].parentNode) return current = array;
392
387
  }
393
388
  return current;
394
389
  }
@@ -408,6 +403,7 @@ function insertExpression(parent, value, current, marker, unwrapArray) {
408
403
  }
409
404
  current = array;
410
405
  } else if (value instanceof Node) {
406
+ if (solidJs.sharedConfig.context) return current = value.parentNode ? value : current;
411
407
  if (Array.isArray(current)) {
412
408
  if (multi) return current = cleanChildren(parent, current, marker, value);
413
409
  cleanChildren(parent, current, null, value);
@@ -480,8 +476,7 @@ function NoHydration(props) {
480
476
 
481
477
  function renderToString(fn, options) {}
482
478
  function renderToStringAsync(fn, options) {}
483
- function pipeToNodeWritable(fn, writable, options) {}
484
- function pipeToWritable(fn, writable, options) {}
479
+ function renderToStream(fn, options) {}
485
480
  function ssr(template, ...nodes) {}
486
481
  function resolveSSRNode(node) {}
487
482
  function ssrClassList(value) {}
@@ -497,6 +492,10 @@ const SVG_NAMESPACE = "http://www.w3.org/2000/svg";
497
492
  function createElement(tagName, isSVG = false) {
498
493
  return isSVG ? document.createElementNS(SVG_NAMESPACE, tagName) : document.createElement(tagName);
499
494
  }
495
+ const hydrate = (...args) => {
496
+ solidJs.enableHydration();
497
+ return hydrate$1(...args);
498
+ };
500
499
  function Portal(props) {
501
500
  const {
502
501
  useShadow
@@ -650,9 +649,8 @@ exports.hydrate = hydrate;
650
649
  exports.insert = insert;
651
650
  exports.isServer = isServer;
652
651
  exports.memo = memo;
653
- exports.pipeToNodeWritable = pipeToNodeWritable;
654
- exports.pipeToWritable = pipeToWritable;
655
652
  exports.render = render;
653
+ exports.renderToStream = renderToStream;
656
654
  exports.renderToString = renderToString;
657
655
  exports.renderToStringAsync = renderToStringAsync;
658
656
  exports.resolveSSRNode = resolveSSRNode;