solid-js 2.0.0-beta.1 → 2.0.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.
Files changed (38) hide show
  1. package/CHEATSHEET.md +640 -0
  2. package/README.md +42 -188
  3. package/dist/dev.cjs +431 -283
  4. package/dist/dev.js +411 -286
  5. package/dist/server.cjs +701 -281
  6. package/dist/server.js +684 -284
  7. package/dist/solid.cjs +423 -255
  8. package/dist/solid.js +403 -258
  9. package/package.json +67 -39
  10. package/types/client/component.d.ts +64 -19
  11. package/types/client/core.d.ts +110 -34
  12. package/types/client/flow.d.ts +176 -42
  13. package/types/client/hydration.d.ts +514 -36
  14. package/types/index.d.ts +9 -12
  15. package/types/server/component.d.ts +11 -11
  16. package/types/server/core.d.ts +19 -14
  17. package/types/server/flow.d.ts +76 -21
  18. package/types/server/hydration.d.ts +34 -9
  19. package/types/server/index.d.ts +5 -7
  20. package/types/server/shared.d.ts +5 -1
  21. package/types/server/signals.d.ts +44 -19
  22. package/types/types.d.ts +15 -0
  23. package/types-cjs/client/component.d.cts +120 -0
  24. package/types-cjs/client/core.d.cts +141 -0
  25. package/types-cjs/client/flow.d.cts +234 -0
  26. package/types-cjs/client/hydration.d.cts +570 -0
  27. package/types-cjs/index.d.cts +17 -0
  28. package/types-cjs/package.json +3 -0
  29. package/types-cjs/server/component.d.cts +67 -0
  30. package/types-cjs/server/core.d.cts +49 -0
  31. package/types-cjs/server/flow.d.cts +115 -0
  32. package/types-cjs/server/hydration.d.cts +63 -0
  33. package/types-cjs/server/index.d.cts +10 -0
  34. package/types-cjs/server/shared.d.cts +50 -0
  35. package/types-cjs/server/signals.d.cts +87 -0
  36. package/types-cjs/types.d.cts +15 -0
  37. package/jsx-runtime.d.ts +0 -1
  38. package/types/jsx.d.ts +0 -4129
package/dist/server.cjs CHANGED
@@ -28,38 +28,82 @@ function runWithObserver(comp, fn) {
28
28
  function getObserver() {
29
29
  return Observer;
30
30
  }
31
- function createSignal(first, second, third) {
31
+ function createDeferredPromise() {
32
+ let settled = false;
33
+ let resolvePromise;
34
+ let rejectPromise;
35
+ const promise = new Promise((resolve, reject) => {
36
+ resolvePromise = resolve;
37
+ rejectPromise = reject;
38
+ });
39
+ return {
40
+ promise,
41
+ resolve(value) {
42
+ if (settled) return;
43
+ settled = true;
44
+ promise.s = 1;
45
+ promise.v = value;
46
+ resolvePromise(value);
47
+ },
48
+ reject(error) {
49
+ if (settled) return;
50
+ settled = true;
51
+ promise.s = 2;
52
+ promise.v = error;
53
+ rejectPromise(error);
54
+ }
55
+ };
56
+ }
57
+ function subscribePendingRetry(error, retry) {
58
+ if (!(error instanceof signals.NotReadyError)) return false;
59
+ error.source?.then(() => retry(), () => retry());
60
+ return true;
61
+ }
62
+ function settleServerAsync(initial, rerun, deferred, onSuccess, onError, isDisposed) {
63
+ let first = true;
64
+ const attempt = () => {
65
+ if (isDisposed()) return;
66
+ let current;
67
+ try {
68
+ current = first ? initial : rerun();
69
+ first = false;
70
+ } catch (error) {
71
+ if (subscribePendingRetry(error, attempt)) return;
72
+ onError(error);
73
+ deferred.reject(error);
74
+ return;
75
+ }
76
+ Promise.resolve(current).then(value => {
77
+ if (isDisposed()) return;
78
+ deferred.resolve(onSuccess(value));
79
+ }, error => {
80
+ if (isDisposed()) return;
81
+ if (subscribePendingRetry(error, attempt)) return;
82
+ onError(error);
83
+ deferred.reject(error);
84
+ });
85
+ };
86
+ attempt();
87
+ }
88
+ function createSignal(first, second) {
32
89
  if (typeof first === "function") {
33
- const ssrSource = third?.ssrSource;
34
- if (ssrSource === "initial" || ssrSource === "client") {
35
- signals.createOwner();
36
- let value = second;
37
- return [() => value, v => {
38
- return value = typeof v === "function" ? v(value) : v;
39
- }];
40
- }
41
- const memoOpts = third?.deferStream || ssrSource ? {
42
- deferStream: third?.deferStream,
43
- ssrSource
90
+ const opts = second?.deferStream || second?.ssrSource ? {
91
+ deferStream: second?.deferStream,
92
+ ssrSource: second?.ssrSource
44
93
  } : undefined;
45
- const memo = createMemo(p => {
46
- let value = first(p ? p[0]() : second);
47
- return [() => value, v => {
48
- return value = typeof v === "function" ? v(value) : v;
49
- }];
50
- }, undefined, memoOpts);
51
- return [() => memo()[0](), v => memo()[1](v)];
94
+ const memo = createMemo(prev => first(prev), opts);
95
+ return [memo, () => undefined];
52
96
  }
53
97
  return [() => first, v => {
54
98
  return first = typeof v === "function" ? v(first) : v;
55
99
  }];
56
100
  }
57
- function createMemo(compute, value, options) {
101
+ function createMemo(compute, options) {
58
102
  const ctx = sharedConfig.context;
59
103
  const owner = signals.createOwner();
60
104
  const comp = {
61
105
  owner,
62
- value: value,
106
+ value: undefined,
63
107
  compute: compute,
64
108
  error: undefined,
65
109
  computed: false,
@@ -70,21 +114,22 @@ function createMemo(compute, value, options) {
70
114
  }));
71
115
  function update() {
72
116
  if (comp.disposed) return;
117
+ const run = () => signals.runWithOwner(owner, () => runWithObserver(comp, () => comp.compute(comp.value)));
73
118
  try {
74
119
  comp.error = undefined;
75
- const result = signals.runWithOwner(owner, () => runWithObserver(comp, () => comp.compute(comp.value)));
120
+ const result = run();
76
121
  comp.computed = true;
77
- processResult(comp, result, owner, ctx, options?.deferStream, options?.ssrSource);
122
+ processResult(comp, result, owner, ctx, options?.deferStream, options?.ssrSource, run);
78
123
  } catch (err) {
79
124
  if (err instanceof signals.NotReadyError) {
80
- err.source?.then(() => update());
125
+ subscribePendingRetry(err, update);
81
126
  }
82
127
  comp.error = err;
83
128
  comp.computed = true;
84
129
  }
85
130
  }
86
131
  const ssrSource = options?.ssrSource;
87
- if (ssrSource === "initial" || ssrSource === "client") {
132
+ if (ssrSource === "client") {
88
133
  comp.computed = true;
89
134
  } else if (!options?.lazy) {
90
135
  update();
@@ -159,76 +204,128 @@ function createDeepProxy(target, patches, basePath = []) {
159
204
  };
160
205
  return new Proxy(target, handler);
161
206
  }
162
- function processResult(comp, result, owner, ctx, deferStream, ssrSource) {
207
+ function processResult(comp, result, owner, ctx, deferStream, ssrSource, rerun) {
163
208
  if (comp.disposed) return;
164
209
  const id = owner.id;
165
- const uninitialized = comp.value === undefined;
166
210
  const noHydrate = signals.getContext(NoHydrateContext, owner);
167
211
  if (result instanceof Promise) {
168
- result.then(v => {
169
- result.s = 1;
170
- result.v = v;
171
- if (comp.disposed) return;
172
- comp.value = v;
212
+ if (result.s === 1) {
213
+ comp.value = result.v;
173
214
  comp.error = undefined;
174
- }, () => {});
175
- if (ctx?.async && ctx.serialize && id && !noHydrate) ctx.serialize(id, result, deferStream);
176
- if (uninitialized) {
177
- comp.error = new signals.NotReadyError(result);
215
+ return;
216
+ }
217
+ if (result.s === 2) {
218
+ comp.error = result.v;
219
+ return;
178
220
  }
221
+ const deferred = createDeferredPromise();
222
+ if (ctx?.async && ctx.serialize && id && !noHydrate) ctx.serialize(id, deferred.promise, deferStream);
223
+ settleServerAsync(result, () => rerun ? rerun() : result, deferred, value => {
224
+ result.s = 1;
225
+ result.v = value;
226
+ comp.value = value;
227
+ comp.error = undefined;
228
+ return value;
229
+ }, error => {
230
+ result.s = 2;
231
+ result.v = error;
232
+ comp.error = error;
233
+ }, () => comp.disposed);
234
+ comp.error = new signals.NotReadyError(deferred.promise);
179
235
  return;
180
236
  }
181
237
  const iterator = result?.[Symbol.asyncIterator];
182
238
  if (typeof iterator === "function") {
183
- const iter = iterator.call(result);
184
239
  if (ssrSource === "hybrid") {
185
- const promise = iter.next().then(v => {
186
- promise.s = 1;
187
- promise.v = v.value;
188
- if (comp.disposed) return;
189
- comp.value = v.value;
240
+ let currentResult = result;
241
+ let iter;
242
+ const deferred = createDeferredPromise();
243
+ const runFirst = () => {
244
+ const source = currentResult ?? (rerun ? rerun() : result);
245
+ currentResult = undefined;
246
+ const nextIterator = source?.[Symbol.asyncIterator];
247
+ if (typeof nextIterator !== "function") {
248
+ throw new Error("Expected async iterator while retrying server createMemo");
249
+ }
250
+ iter = nextIterator.call(source);
251
+ return iter.next().then(value => {
252
+ if (!value.done) closeAsyncIterator(iter);
253
+ return value.value;
254
+ });
255
+ };
256
+ settleServerAsync(runFirst(), runFirst, deferred, value => {
257
+ comp.value = value;
190
258
  comp.error = undefined;
191
- }, () => {});
192
- if (ctx?.async && ctx.serialize && id && !noHydrate) ctx.serialize(id, promise, deferStream);
193
- if (uninitialized) {
194
- comp.error = new signals.NotReadyError(promise);
195
- }
259
+ return value;
260
+ }, error => {
261
+ comp.error = error;
262
+ }, () => comp.disposed);
263
+ if (ctx?.async && ctx.serialize && id && !noHydrate) ctx.serialize(id, deferred.promise, deferStream);
264
+ comp.error = new signals.NotReadyError(deferred.promise);
196
265
  } else {
197
- const firstNext = iter.next();
198
- const firstReady = firstNext.then(r => {
199
- if (comp.disposed) return;
200
- if (!r.done) {
201
- comp.value = r.value;
202
- comp.error = undefined;
266
+ let currentResult = result;
267
+ let iter;
268
+ let firstResult;
269
+ const deferred = createDeferredPromise();
270
+ const runFirst = () => {
271
+ const source = currentResult ?? (rerun ? rerun() : result);
272
+ currentResult = undefined;
273
+ const nextIterator = source?.[Symbol.asyncIterator];
274
+ if (typeof nextIterator !== "function") {
275
+ throw new Error("Expected async iterator while retrying server createMemo");
203
276
  }
204
- }, () => {});
205
- let servedFirst = false;
206
- const tapped = {
207
- [Symbol.asyncIterator]: () => ({
208
- next() {
209
- if (!servedFirst) {
210
- servedFirst = true;
211
- return firstNext.then(r => {
212
- if (!r.done && !comp.disposed) comp.value = r.value;
213
- return r;
214
- });
215
- }
216
- return iter.next().then(r => r);
217
- }
218
- })
277
+ iter = nextIterator.call(source);
278
+ return iter.next().then(value => {
279
+ firstResult = value;
280
+ return Promise.resolve();
281
+ });
219
282
  };
220
- if (ctx?.async && ctx.serialize && id && !noHydrate) ctx.serialize(id, tapped, deferStream);
221
- if (uninitialized) {
222
- comp.error = new signals.NotReadyError(firstReady);
283
+ settleServerAsync(runFirst(), runFirst, deferred, () => {
284
+ const resolved = firstResult;
285
+ if (resolved && !resolved.done) {
286
+ comp.value = resolved.value;
287
+ }
288
+ comp.error = undefined;
289
+ return undefined;
290
+ }, error => {
291
+ comp.error = error;
292
+ }, () => comp.disposed);
293
+ if (ctx?.async && ctx.serialize && id && !noHydrate) {
294
+ let tappedFirst = true;
295
+ const tapped = {
296
+ [Symbol.asyncIterator]: () => ({
297
+ next() {
298
+ if (tappedFirst) {
299
+ tappedFirst = false;
300
+ return deferred.promise.then(() => firstResult?.done ? {
301
+ done: true,
302
+ value: undefined
303
+ } : firstResult);
304
+ }
305
+ return iter.next().then(r => r);
306
+ },
307
+ return(value) {
308
+ return iter.return?.(value);
309
+ }
310
+ })
311
+ };
312
+ ctx.serialize(id, tapped, deferStream);
223
313
  }
314
+ comp.error = new signals.NotReadyError(deferred.promise);
224
315
  }
225
316
  return;
226
317
  }
227
318
  comp.value = result;
228
319
  }
229
- function serverEffect(compute, effectFn, value, options) {
320
+ function closeAsyncIterator(iter, value) {
321
+ const returned = iter.return?.(value);
322
+ if (returned && typeof returned.then === "function") {
323
+ returned.then(undefined, () => {});
324
+ }
325
+ }
326
+ function serverEffect(compute, effectFn, options) {
230
327
  const ssrSource = options?.ssrSource;
231
- if (ssrSource === "client" || ssrSource === "initial") {
328
+ if (ssrSource === "client") {
232
329
  signals.createOwner();
233
330
  return;
234
331
  }
@@ -236,7 +333,7 @@ function serverEffect(compute, effectFn, value, options) {
236
333
  const owner = signals.createOwner();
237
334
  const comp = {
238
335
  owner,
239
- value: value,
336
+ value: undefined,
240
337
  compute: compute,
241
338
  error: undefined,
242
339
  computed: true,
@@ -248,19 +345,19 @@ function serverEffect(compute, effectFn, value, options) {
248
345
  }));
249
346
  }
250
347
  try {
251
- const result = signals.runWithOwner(owner, () => runWithObserver(comp, () => compute(value)));
348
+ const result = signals.runWithOwner(owner, () => runWithObserver(comp, () => compute(undefined)));
252
349
  if (ssrSource) {
253
350
  processResult(comp, result, owner, ctx, options?.deferStream, ssrSource);
254
351
  }
255
- effectFn?.(ssrSource ? comp.value ?? result : result, value);
352
+ effectFn?.(ssrSource ? comp.value ?? result : result, undefined);
256
353
  } catch (err) {
257
354
  }
258
355
  }
259
- function createEffect(compute, effect, value, options) {
260
- serverEffect(compute, undefined, value, options);
356
+ function createEffect(compute, effect, options) {
357
+ serverEffect(compute, undefined, options);
261
358
  }
262
- function createRenderEffect(compute, effectFn, value, options) {
263
- serverEffect(compute, effectFn, value, options);
359
+ function createRenderEffect(compute, effectFn, options) {
360
+ serverEffect(compute, effectFn, options);
264
361
  }
265
362
  function createTrackedEffect(compute, options) {
266
363
  const o = signals.getOwner();
@@ -271,8 +368,8 @@ function createReaction(effectFn, options) {
271
368
  tracking();
272
369
  };
273
370
  }
274
- function createOptimistic(first, second, third) {
275
- return createSignal(first, second, third);
371
+ function createOptimistic(first, second) {
372
+ return createSignal(first, second);
276
373
  }
277
374
  function setProperty(state, property, value) {
278
375
  if (state[property] === value) return;
@@ -282,7 +379,7 @@ function setProperty(state, property, value) {
282
379
  }
283
380
  function createStore(first, second) {
284
381
  if (typeof first === "function") {
285
- const store = createProjection(first, second ?? {});
382
+ const store = createProjection(first, second);
286
383
  return [store, fn => fn(store)];
287
384
  }
288
385
  const state = first;
@@ -305,11 +402,11 @@ function createPendingProxy(state, source) {
305
402
  pending = false;
306
403
  }];
307
404
  }
308
- function createProjection(fn, initialValue = {}, options) {
405
+ function createProjection(fn, initialValue, options) {
309
406
  const ctx = sharedConfig.context;
310
407
  const owner = signals.createOwner();
311
408
  const [state] = createStore(initialValue);
312
- if (options?.ssrSource === "initial" || options?.ssrSource === "client") {
409
+ if (options?.ssrSource === "client") {
313
410
  return state;
314
411
  }
315
412
  let disposed = false;
@@ -320,100 +417,131 @@ function createProjection(fn, initialValue = {}, options) {
320
417
  const useProxy = ssrSource !== "hybrid";
321
418
  const patches = [];
322
419
  const draft = useProxy ? createDeepProxy(state, patches) : state;
323
- const result = signals.runWithOwner(owner, () => fn(draft));
420
+ const runProjection = () => signals.runWithOwner(owner, () => fn(draft));
421
+ const result = runProjection();
324
422
  const iteratorFn = result?.[Symbol.asyncIterator];
325
423
  if (typeof iteratorFn === "function") {
326
- const iter = iteratorFn.call(result);
327
424
  if (ssrSource === "hybrid") {
328
- const promise = iter.next().then(r => {
329
- promise.s = 1;
330
- if (disposed) {
331
- promise.v = state;
332
- return;
425
+ let currentResult = result;
426
+ let iter;
427
+ const deferred = createDeferredPromise();
428
+ const [pending, markReady] = createPendingProxy(state, deferred.promise);
429
+ const runFirst = () => {
430
+ const source = currentResult ?? runProjection();
431
+ currentResult = undefined;
432
+ const nextIterator = source?.[Symbol.asyncIterator];
433
+ if (typeof nextIterator !== "function") {
434
+ throw new Error("Expected async iterator while retrying server createProjection");
333
435
  }
334
- if (r.value !== undefined && r.value !== state) {
335
- Object.assign(state, r.value);
436
+ iter = nextIterator.call(source);
437
+ return iter.next().then(r => {
438
+ if (!r.done) closeAsyncIterator(iter);
439
+ return r.value;
440
+ });
441
+ };
442
+ settleServerAsync(runFirst(), runFirst, deferred, value => {
443
+ if (value !== undefined && value !== state) {
444
+ Object.assign(state, value);
336
445
  }
337
- promise.v = state;
338
446
  markReady();
339
- }, () => {});
340
- if (ctx?.async && !signals.getContext(NoHydrateContext) && owner.id) ctx.serialize(owner.id, promise, options?.deferStream);
341
- const [pending, markReady] = createPendingProxy(state, promise);
447
+ return state;
448
+ }, error => {
449
+ markReady();
450
+ }, () => disposed);
451
+ if (ctx?.async && !signals.getContext(NoHydrateContext) && owner.id) ctx.serialize(owner.id, deferred.promise, options?.deferStream);
342
452
  return pending;
343
453
  } else {
344
- const firstNext = iter.next();
345
- const firstReady = firstNext.then(r => {
346
- if (disposed) return;
454
+ let currentResult = result;
455
+ let iter;
456
+ let firstResult;
457
+ const deferred = createDeferredPromise();
458
+ const [pending, markReady] = createPendingProxy(state, deferred.promise);
459
+ const runFirst = () => {
460
+ const source = currentResult ?? runProjection();
461
+ currentResult = undefined;
462
+ const nextIterator = source?.[Symbol.asyncIterator];
463
+ if (typeof nextIterator !== "function") {
464
+ throw new Error("Expected async iterator while retrying server createProjection");
465
+ }
466
+ iter = nextIterator.call(source);
467
+ return iter.next().then(value => {
468
+ firstResult = value;
469
+ return Promise.resolve();
470
+ });
471
+ };
472
+ settleServerAsync(runFirst(), runFirst, deferred, () => {
347
473
  patches.length = 0;
348
- if (!r.done) {
349
- if (r.value !== undefined && r.value !== draft) {
350
- Object.assign(state, r.value);
351
- }
474
+ const resolved = firstResult;
475
+ if (resolved && !resolved.done && resolved.value !== undefined && resolved.value !== draft) {
476
+ Object.assign(state, resolved.value);
352
477
  }
353
478
  markReady(JSON.parse(JSON.stringify(state)));
354
- }, () => {
479
+ return undefined;
480
+ }, error => {
355
481
  markReady();
356
- });
357
- let servedFirst = false;
358
- const tapped = {
359
- [Symbol.asyncIterator]: () => ({
360
- next() {
361
- if (!servedFirst) {
362
- servedFirst = true;
363
- return firstNext.then(r => {
364
- if (!r.done && !disposed) return {
365
- done: false,
366
- value: state
482
+ }, () => disposed);
483
+ if (ctx?.async && !signals.getContext(NoHydrateContext) && owner.id) {
484
+ let tappedFirst = true;
485
+ const tapped = {
486
+ [Symbol.asyncIterator]: () => ({
487
+ next() {
488
+ if (tappedFirst) {
489
+ tappedFirst = false;
490
+ return deferred.promise.then(() => {
491
+ if (firstResult?.done) return {
492
+ done: true,
493
+ value: undefined
494
+ };
495
+ return {
496
+ done: false,
497
+ value: JSON.parse(JSON.stringify(state))
498
+ };
499
+ });
500
+ }
501
+ return iter.next().then(r => {
502
+ if (disposed) return {
503
+ done: true,
504
+ value: undefined
367
505
  };
506
+ const flushed = patches.splice(0);
507
+ if (!r.done) {
508
+ if (r.value !== undefined && r.value !== draft) {
509
+ Object.assign(state, r.value);
510
+ }
511
+ return {
512
+ done: false,
513
+ value: flushed
514
+ };
515
+ }
368
516
  return {
369
- done: r.done,
517
+ done: true,
370
518
  value: undefined
371
519
  };
372
520
  });
521
+ },
522
+ return(value) {
523
+ return iter.return?.(value);
373
524
  }
374
- return iter.next().then(r => {
375
- if (disposed) return {
376
- done: true,
377
- value: undefined
378
- };
379
- const flushed = patches.splice(0);
380
- if (!r.done) {
381
- if (r.value !== undefined && r.value !== draft) {
382
- Object.assign(state, r.value);
383
- }
384
- return {
385
- done: false,
386
- value: flushed
387
- };
388
- }
389
- return {
390
- done: true,
391
- value: undefined
392
- };
393
- });
394
- }
395
- })
396
- };
397
- if (ctx?.async && !signals.getContext(NoHydrateContext) && owner.id) ctx.serialize(owner.id, tapped, options?.deferStream);
398
- const [pending, markReady] = createPendingProxy(state, firstReady);
525
+ })
526
+ };
527
+ ctx.serialize(owner.id, tapped, options?.deferStream);
528
+ }
399
529
  return pending;
400
530
  }
401
531
  }
402
532
  if (result instanceof Promise) {
403
- const promise = result.then(v => {
404
- promise.s = 1;
405
- if (disposed) {
406
- promise.v = state;
407
- return;
533
+ const deferred = createDeferredPromise();
534
+ const [pending, markReady] = createPendingProxy(state, deferred.promise);
535
+ settleServerAsync(result, () => runProjection(), deferred, value => {
536
+ if (value !== undefined && value !== state) {
537
+ Object.assign(state, value);
408
538
  }
409
- if (v !== undefined && v !== state) {
410
- Object.assign(state, v);
411
- }
412
- promise.v = state;
413
539
  markReady();
414
- }, () => {});
415
- if (ctx?.async && !signals.getContext(NoHydrateContext) && owner.id) ctx.serialize(owner.id, promise, options?.deferStream);
416
- const [pending, markReady] = createPendingProxy(state, promise);
540
+ return state;
541
+ }, error => {
542
+ markReady();
543
+ }, () => disposed);
544
+ if (ctx?.async && !signals.getContext(NoHydrateContext) && owner.id) ctx.serialize(owner.id, deferred.promise, options?.deferStream);
417
545
  return pending;
418
546
  }
419
547
  if (result !== undefined && result !== state && result !== draft) {
@@ -441,7 +569,7 @@ function deep(store) {
441
569
  }
442
570
  function mapArray(list, mapFn, options = {}) {
443
571
  const parent = signals.createOwner();
444
- return () => {
572
+ return createMemo(() => {
445
573
  const items = list();
446
574
  let s = [];
447
575
  if (items && items.length) {
@@ -458,54 +586,93 @@ function mapArray(list, mapFn, options = {}) {
458
586
  })];
459
587
  }
460
588
  return s;
461
- };
589
+ });
462
590
  }
463
591
  function repeat(count, mapFn, options = {}) {
464
592
  const owner = signals.createOwner();
465
- const len = count();
466
- const offset = options.from?.() || 0;
467
- let s = [];
468
- if (len) {
469
- signals.runWithOwner(owner, () => {
470
- for (let i = 0; i < len; i++) {
471
- const itemOwner = signals.createOwner();
472
- s.push(signals.runWithOwner(itemOwner, () => mapFn(i + offset)));
473
- }
474
- });
475
- } else if (options.fallback) {
476
- s = [signals.runWithOwner(owner, () => {
477
- const fo = signals.createOwner();
478
- return signals.runWithOwner(fo, () => options.fallback());
479
- })];
480
- }
481
- return () => s;
593
+ return createMemo(() => {
594
+ const len = count();
595
+ const offset = options.from?.() || 0;
596
+ if (!len) {
597
+ if (!options.fallback) return [];
598
+ return [signals.runWithOwner(owner, () => {
599
+ const fallbackOwner = signals.createOwner();
600
+ return signals.runWithOwner(fallbackOwner, () => options.fallback());
601
+ })];
602
+ }
603
+ return signals.runWithOwner(owner, () => Array.from({
604
+ length: len
605
+ }, (_, i) => {
606
+ const itemOwner = signals.createOwner();
607
+ return signals.runWithOwner(itemOwner, () => mapFn(i + offset));
608
+ }));
609
+ });
482
610
  }
483
611
  const ErrorContext = {
484
612
  id: Symbol("ErrorContext"),
485
613
  defaultValue: null
486
614
  };
615
+ function runWithBoundaryErrorContext(owner, render, onError, context, boundaryId) {
616
+ const prevCtx = sharedConfig.context;
617
+ const prevBoundary = context?._currentBoundaryId;
618
+ if (context) {
619
+ sharedConfig.context = context;
620
+ if (boundaryId !== undefined) context._currentBoundaryId = boundaryId;
621
+ }
622
+ try {
623
+ return signals.runWithOwner(owner, () => {
624
+ const parentHandler = signals.getContext(ErrorContext);
625
+ signals.setContext(ErrorContext, err => onError(err, parentHandler));
626
+ return render();
627
+ });
628
+ } finally {
629
+ if (context) {
630
+ if (boundaryId !== undefined) context._currentBoundaryId = prevBoundary;
631
+ sharedConfig.context = prevCtx;
632
+ }
633
+ }
634
+ }
487
635
  function createErrorBoundary(fn, fallback) {
488
636
  const ctx = sharedConfig.context;
489
- const owner = signals.createOwner();
490
637
  const parent = signals.getOwner();
491
- if (parent?.id != null) signals.getNextChildId(parent);
492
- owner.id = owner.id + "0";
493
- return signals.runWithOwner(owner, () => {
638
+ const owner = signals.createOwner();
639
+ const resolve = () => {
640
+ const resolved = ctx.resolve(signals.runWithOwner(signals.createOwner(), fn));
641
+ if (resolved?.p?.length) throw new signals.NotReadyError(Promise.all(resolved.p));
642
+ return resolved;
643
+ };
644
+ const renderFallback = err => ctx ? signals.runWithOwner(parent, () => {
645
+ const fallbackOwner = signals.createOwner();
646
+ return signals.runWithOwner(fallbackOwner, () => fallback(err, () => {}));
647
+ }) : fallback(err, () => {});
648
+ const serializeError = err => {
649
+ if (ctx && owner.id && !signals.runWithOwner(owner, () => signals.getContext(NoHydrateContext))) {
650
+ ctx.serialize(owner.id, err);
651
+ }
652
+ };
653
+ const handleError = err => {
654
+ serializeError(err);
655
+ return renderFallback(err);
656
+ };
657
+ return () => {
494
658
  let result;
495
- signals.setContext(ErrorContext, err => {
496
- if (ctx && !signals.getContext(NoHydrateContext) && owner.id) ctx.serialize(owner.id, err);
497
- result = fallback(err, () => {});
498
- });
659
+ let handled = false;
660
+ if (ctx) owner.dispose(false);
499
661
  try {
500
- result = fn();
662
+ result = ctx ? runWithBoundaryErrorContext(owner, resolve, err => {
663
+ if (err instanceof signals.NotReadyError) throw err;
664
+ handled = true;
665
+ result = handleError(err);
666
+ throw err;
667
+ }) : signals.runWithOwner(owner, fn);
501
668
  } catch (err) {
502
- if (ctx && !signals.getContext(NoHydrateContext) && owner.id) ctx.serialize(owner.id, err);
503
- result = fallback(err, () => {});
669
+ if (err instanceof signals.NotReadyError) throw err;
670
+ result = handled ? result : handleError(err);
504
671
  }
505
- return () => result;
506
- });
672
+ return result;
673
+ };
507
674
  }
508
- function createLoadBoundary(fn, fallback) {
675
+ function createLoadingBoundary$1(fn, fallback, options) {
509
676
  try {
510
677
  const result = fn();
511
678
  return () => result;
@@ -516,6 +683,10 @@ function createLoadBoundary(fn, fallback) {
516
683
  throw err;
517
684
  }
518
685
  }
686
+ function createRevealOrder(fn, _options) {
687
+ const o = signals.createOwner();
688
+ return signals.runWithOwner(o, fn);
689
+ }
519
690
  function untrack(fn) {
520
691
  return fn();
521
692
  }
@@ -568,10 +739,10 @@ function useContext(context) {
568
739
  return signals.getContext(context);
569
740
  }
570
741
  function children(fn) {
571
- const c = createMemo(fn, undefined, {
742
+ const c = createMemo(fn, {
572
743
  lazy: true
573
744
  });
574
- const memo = createMemo(() => signals.flatten(c()), undefined, {
745
+ const memo = createMemo(() => signals.flatten(c()), {
575
746
  lazy: true
576
747
  });
577
748
  memo.toArray = () => {
@@ -581,7 +752,9 @@ function children(fn) {
581
752
  return memo;
582
753
  }
583
754
  function ssrRunInScope(fn) {
584
- return fn;
755
+ const owner = signals.getOwner();
756
+ if (!owner) return fn;
757
+ return Array.isArray(fn) ? fn.map(hole => () => signals.runWithOwner(owner, hole)) : () => signals.runWithOwner(owner, fn);
585
758
  }
586
759
 
587
760
  function enableHydration() {}
@@ -638,6 +811,159 @@ function createUniqueId() {
638
811
  return signals.getNextChildId(o);
639
812
  }
640
813
 
814
+ const RevealGroupContext = {
815
+ id: Symbol("RevealGroupContext"),
816
+ defaultValue: null
817
+ };
818
+ function ssrHandleError(err) {
819
+ if (err instanceof signals.NotReadyError) {
820
+ return err.source;
821
+ }
822
+ const handler = signals.getContext(ErrorContext);
823
+ if (handler) {
824
+ handler(err);
825
+ return;
826
+ }
827
+ throw err;
828
+ }
829
+ function createLoadingBoundary(fn, fallback, options) {
830
+ const currentCtx = sharedConfig.context;
831
+ if (!currentCtx) {
832
+ return createLoadingBoundary$1(fn, fallback);
833
+ }
834
+ const ctx = currentCtx;
835
+ const parent = signals.getOwner();
836
+ const parentHandler = parent && signals.runWithOwner(parent, () => signals.getContext(ErrorContext));
837
+ const revealGroup = parent && signals.runWithOwner(parent, () => signals.getContext(RevealGroupContext));
838
+ const o = signals.createOwner();
839
+ const id = o.id;
840
+ o.id = id + "00";
841
+ let done;
842
+ let handledRenderError;
843
+ let retryPromise;
844
+ let serializeBuffer = [];
845
+ const bufferedCtx = Object.create(ctx);
846
+ bufferedCtx.serialize = (id, value, deferStream) => {
847
+ serializeBuffer.push([id, value, deferStream]);
848
+ };
849
+ bufferedCtx._currentBoundaryId = id;
850
+ function flushSerializeBuffer() {
851
+ for (const args of serializeBuffer) ctx.serialize(args[0], args[1], args[2]);
852
+ serializeBuffer = [];
853
+ }
854
+ function commitBoundaryState() {
855
+ flushSerializeBuffer();
856
+ const modules = ctx.getBoundaryModules?.(id);
857
+ if (modules) ctx.serialize(id + "_assets", modules);
858
+ }
859
+ function runLoadingPhase(render) {
860
+ handledRenderError = undefined;
861
+ return runWithBoundaryErrorContext(o, render, (err, parentHandler) => {
862
+ handledRenderError = err;
863
+ if (done?.(undefined, err)) throw err;
864
+ if (parentHandler) {
865
+ parentHandler(err);
866
+ return;
867
+ }
868
+ throw err;
869
+ }, bufferedCtx, id);
870
+ }
871
+ function finalizeError(err) {
872
+ if (handledRenderError === err) {
873
+ handledRenderError = undefined;
874
+ return;
875
+ }
876
+ if (done?.(undefined, err)) return;
877
+ if (!parentHandler) throw err;
878
+ try {
879
+ signals.runWithOwner(parent, () => parentHandler(err));
880
+ } catch (caught) {
881
+ if (caught !== err) throw caught;
882
+ }
883
+ }
884
+ function runDiscovery() {
885
+ o.dispose(false);
886
+ serializeBuffer = [];
887
+ retryPromise = undefined;
888
+ return runLoadingPhase(() => {
889
+ try {
890
+ return ctx.resolve(fn());
891
+ } catch (err) {
892
+ if (err instanceof signals.NotReadyError) {
893
+ retryPromise = err.source;
894
+ return undefined;
895
+ }
896
+ throw err;
897
+ }
898
+ });
899
+ }
900
+ let ret = runDiscovery();
901
+ if (!retryPromise && !ret?.p?.length) {
902
+ commitBoundaryState();
903
+ return () => ret;
904
+ }
905
+ const regResult = revealGroup ? revealGroup.register(id) : null;
906
+ const collapseFallback = regResult?.collapseFallback ?? false;
907
+ if (collapseFallback && !ctx.async) {
908
+ commitBoundaryState();
909
+ ctx.serialize(id, "$$f");
910
+ return () => undefined;
911
+ }
912
+ const fallbackOwner = signals.createOwner({
913
+ id
914
+ });
915
+ const fallbackResult = signals.runWithOwner(fallbackOwner, () => {
916
+ if (!ctx.async) return fallback();
917
+ const tpl = collapseFallback ? [`<template id="pl-${id}">`, `</template><!--pl-${id}-->`] : [`<template id="pl-${id}"></template>`, `<!--pl-${id}-->`];
918
+ return ctx.ssr(tpl, ctx.escape(fallback()));
919
+ });
920
+ if (ctx.async) {
921
+ const regOpts = revealGroup ? {
922
+ revealGroup: revealGroup.id
923
+ } : undefined;
924
+ done = ctx.registerFragment(id, regOpts);
925
+ (async () => {
926
+ try {
927
+ while (retryPromise) {
928
+ await retryPromise.catch(() => {});
929
+ ret = runDiscovery();
930
+ }
931
+ commitBoundaryState();
932
+ while (ret.p.length) {
933
+ await Promise.all(ret.p).catch(() => {});
934
+ ret = runLoadingPhase(() => ctx.ssr(ret.t, ...ret.h));
935
+ }
936
+ flushSerializeBuffer();
937
+ done(ret.t[0]);
938
+ if (revealGroup) revealGroup.onResolved(id);
939
+ } catch (err) {
940
+ finalizeError(err);
941
+ }
942
+ })();
943
+ return () => fallbackResult;
944
+ }
945
+ commitBoundaryState();
946
+ ctx.serialize(id, "$$f");
947
+ return () => fallbackResult;
948
+ }
949
+ function NoHydration(props) {
950
+ const o = signals.createOwner();
951
+ return signals.runWithOwner(o, () => {
952
+ signals.setContext(NoHydrateContext, true);
953
+ return props.children;
954
+ });
955
+ }
956
+ function Hydration(props) {
957
+ if (!signals.getContext(NoHydrateContext)) return props.children;
958
+ const o = signals.createOwner({
959
+ id: props.id ?? ""
960
+ });
961
+ return signals.runWithOwner(o, () => {
962
+ signals.setContext(NoHydrateContext, false);
963
+ return props.children;
964
+ });
965
+ }
966
+
641
967
  function For(props) {
642
968
  const options = "fallback" in props ? {
643
969
  keyed: props.keyed,
@@ -645,7 +971,7 @@ function For(props) {
645
971
  } : {
646
972
  keyed: props.keyed
647
973
  };
648
- return createMemo(mapArray(() => props.each, props.children, options));
974
+ return mapArray(() => props.each, props.children, options);
649
975
  }
650
976
  function Repeat(props) {
651
977
  const options = "fallback" in props ? {
@@ -698,106 +1024,180 @@ function Errored(props) {
698
1024
  return typeof f === "function" && f.length ? f(err, reset) : f;
699
1025
  });
700
1026
  }
701
-
702
- function ssrHandleError(err) {
703
- if (err instanceof signals.NotReadyError) {
704
- return err.source;
705
- }
706
- const handler = signals.getContext(ErrorContext);
707
- if (handler) {
708
- handler(err);
709
- return;
710
- }
711
- throw err;
712
- }
713
1027
  function Loading(props) {
714
- const ctx = sharedConfig.context;
715
- if (!ctx) {
716
- return createLoadBoundary(() => props.children, () => props.fallback);
717
- }
1028
+ return createLoadingBoundary(() => props.children, () => props.fallback);
1029
+ }
1030
+ function Reveal(props) {
718
1031
  const o = signals.createOwner();
719
1032
  const id = o.id;
720
- o.id = id + "00";
721
- let runPromise;
722
- let serializeBuffer = [];
723
- const origSerialize = ctx.serialize;
724
- function runInitially() {
725
- o.dispose(false);
726
- serializeBuffer = [];
727
- ctx.serialize = (id, p, deferStream) => {
728
- serializeBuffer.push([id, p, deferStream]);
729
- };
730
- const prevBoundary = ctx._currentBoundaryId;
731
- ctx._currentBoundaryId = id;
732
- const result = signals.runWithOwner(o, () => {
733
- try {
734
- return ctx.resolve(props.children);
735
- } catch (err) {
736
- runPromise = ssrHandleError(err);
1033
+ const order = props.order ?? "sequential";
1034
+ const collapsed = order === "sequential" && !!props.collapsed;
1035
+ if (!sharedConfig.context?.async) {
1036
+ const parent = signals.getOwner();
1037
+ const parentGroup = parent ? signals.runWithOwner(parent, () => signals.getContext(RevealGroupContext)) : null;
1038
+ let collapsedByParent = false;
1039
+ if (parentGroup) {
1040
+ const reg = parentGroup.register(id);
1041
+ collapsedByParent = reg.collapseFallback;
1042
+ if (order === "together" || collapsed) console.warn("Nested <Reveal> with collapsed/together won't coordinate correctly with renderToString. Use renderToStream for full support.");
1043
+ }
1044
+ let count = 0;
1045
+ return signals.runWithOwner(o, () => {
1046
+ signals.setContext(RevealGroupContext, {
1047
+ id,
1048
+ register(_key) {
1049
+ count++;
1050
+ const collapseFallback = collapsedByParent || order === "sequential" && collapsed && count > 1;
1051
+ return {
1052
+ collapseFallback,
1053
+ held: false
1054
+ };
1055
+ },
1056
+ onResolved() {}
1057
+ });
1058
+ return props.children;
1059
+ });
1060
+ }
1061
+ const ctx = sharedConfig.context;
1062
+ const keys = [];
1063
+ const resolved = new Set();
1064
+ const minimallyResolved = new Set();
1065
+ const composites = new Map();
1066
+ const activated = new Set();
1067
+ const stash = [];
1068
+ const collapsedLeafKeys = [];
1069
+ let frontier = 0;
1070
+ let heldByParent = false;
1071
+ let collapsedByParent = false;
1072
+ let selfMinimallyResolved = false;
1073
+ let notifiedParentDone = false;
1074
+ const parent = signals.getOwner();
1075
+ const parentGroup = parent ? signals.runWithOwner(parent, () => signals.getContext(RevealGroupContext)) : null;
1076
+ if (parentGroup) {
1077
+ const reg = parentGroup.register(id, {
1078
+ onActivate: () => {
1079
+ if (!heldByParent) return;
1080
+ heldByParent = false;
1081
+ if (collapsedByParent) {
1082
+ collapsedByParent = false;
1083
+ if (collapsedLeafKeys.length) {
1084
+ ctx.revealFallbacks?.([...collapsedLeafKeys]);
1085
+ collapsedLeafKeys.length = 0;
1086
+ }
1087
+ }
1088
+ if (order === "sequential") advanceFrontier();else if (order === "together") checkTogetherRelease();else naturalRelease();
737
1089
  }
738
1090
  });
739
- ctx._currentBoundaryId = prevBoundary;
740
- ctx.serialize = origSerialize;
741
- return result;
1091
+ collapsedByParent = reg.collapseFallback;
1092
+ heldByParent = reg.held;
742
1093
  }
743
- let ret = runInitially();
744
- if (!(runPromise || ret?.p?.length)) {
745
- for (const args of serializeBuffer) origSerialize(args[0], args[1], args[2]);
746
- serializeBuffer = [];
747
- const modules = ctx.getBoundaryModules?.(id);
748
- if (modules) ctx.serialize(id + "_assets", modules);
749
- return ret;
1094
+ function notifyParentIfDone() {
1095
+ if (notifiedParentDone) return;
1096
+ if (parentGroup && resolved.size === keys.length) {
1097
+ notifiedParentDone = true;
1098
+ parentGroup.onResolved(id);
1099
+ }
750
1100
  }
751
- const fallbackOwner = signals.createOwner({
752
- id
753
- });
754
- signals.getNextChildId(fallbackOwner);
755
- if (ctx.async) {
756
- const done = ctx.registerFragment(id);
757
- (async () => {
758
- try {
759
- while (runPromise) {
760
- o.dispose(false);
761
- await runPromise;
762
- runPromise = undefined;
763
- ret = runInitially();
1101
+ function activateComposite(key) {
1102
+ if (activated.has(key)) return;
1103
+ activated.add(key);
1104
+ composites.get(key)();
1105
+ }
1106
+ function updateSelfMinimallyResolved() {
1107
+ if (selfMinimallyResolved) return;
1108
+ if (keys.length === 0) selfMinimallyResolved = true;else if (order === "together") selfMinimallyResolved = minimallyResolved.size === keys.length;else if (order === "sequential") selfMinimallyResolved = minimallyResolved.has(keys[0]);
1109
+ else selfMinimallyResolved = resolved.size > 0;
1110
+ if (selfMinimallyResolved) parentGroup?.onMinimallyResolved?.(id);
1111
+ }
1112
+ function advanceFrontier() {
1113
+ if (heldByParent) return;
1114
+ while (frontier < keys.length && resolved.has(keys[frontier])) {
1115
+ const k = keys[frontier];
1116
+ if (composites.has(k)) activateComposite(k);else ctx.revealFragments?.([k]);
1117
+ frontier++;
1118
+ }
1119
+ if (frontier < keys.length) {
1120
+ const k = keys[frontier];
1121
+ if (composites.has(k)) activateComposite(k);else if (order === "sequential" && collapsed) ctx.revealFallbacks?.([k]);
1122
+ }
1123
+ notifyParentIfDone();
1124
+ }
1125
+ function checkTogetherRelease() {
1126
+ if (order !== "together" || heldByParent) return;
1127
+ if (minimallyResolved.size < keys.length) return;
1128
+ if (stash.length) {
1129
+ ctx.revealFragments?.([...stash]);
1130
+ stash.length = 0;
1131
+ }
1132
+ composites.forEach((_, key) => activateComposite(key));
1133
+ notifyParentIfDone();
1134
+ }
1135
+ function naturalRelease() {
1136
+ if (stash.length) {
1137
+ ctx.revealFragments?.([...stash]);
1138
+ stash.length = 0;
1139
+ }
1140
+ composites.forEach((_, key) => activateComposite(key));
1141
+ notifyParentIfDone();
1142
+ }
1143
+ return signals.runWithOwner(o, () => {
1144
+ signals.setContext(RevealGroupContext, {
1145
+ id,
1146
+ register(key, options) {
1147
+ keys.push(key);
1148
+ const isComposite = !!options?.onActivate;
1149
+ if (isComposite) composites.set(key, options.onActivate);
1150
+ const selfCollapse = order === "sequential" && collapsed && keys.length > 1;
1151
+ const collapseFallback = collapsedByParent || selfCollapse;
1152
+ if (collapseFallback && !isComposite) collapsedLeafKeys.push(key);
1153
+ let held = heldByParent;
1154
+ if (!held) {
1155
+ if (order === "together") held = true;else if (order === "sequential" && keys.length > 1) held = true;
764
1156
  }
765
- for (const args of serializeBuffer) origSerialize(args[0], args[1], args[2]);
766
- serializeBuffer = [];
767
- while (ret.p.length) {
768
- await Promise.all(ret.p);
769
- ret = signals.runWithOwner(o, () => ctx.ssr(ret.t, ...ret.h));
1157
+ return {
1158
+ collapseFallback,
1159
+ held
1160
+ };
1161
+ },
1162
+ onResolved(key) {
1163
+ resolved.add(key);
1164
+ const isLeaf = !composites.has(key);
1165
+ if (isLeaf) {
1166
+ if (order === "together") {
1167
+ stash.push(key);
1168
+ } else if (order === "natural" && heldByParent) {
1169
+ stash.push(key);
1170
+ } else if (order === "natural") {
1171
+ ctx.revealFragments?.([key]);
1172
+ }
1173
+ markMinimallyResolved(key);
1174
+ if (order === "sequential" && !heldByParent) advanceFrontier();
1175
+ if (order === "natural") updateSelfMinimallyResolved();
1176
+ } else {
1177
+ if (!heldByParent) {
1178
+ if (order === "sequential") advanceFrontier();else if (order === "natural") activateComposite(key);
1179
+ }
1180
+ if (order === "together") checkTogetherRelease();
1181
+ if (order === "natural") updateSelfMinimallyResolved();
770
1182
  }
771
- done(ret.t[0]);
772
- } catch (err) {
773
- done(undefined, err);
1183
+ notifyParentIfDone();
1184
+ },
1185
+ onMinimallyResolved(key) {
1186
+ markMinimallyResolved(key);
774
1187
  }
775
- })();
776
- return signals.runWithOwner(fallbackOwner, () => ctx.ssr([`<template id="pl-${id}"></template>`, `<!--pl-${id}-->`], ctx.escape(props.fallback)));
777
- }
778
- for (const args of serializeBuffer) origSerialize(args[0], args[1], args[2]);
779
- serializeBuffer = [];
780
- const modules = ctx.getBoundaryModules?.(id);
781
- if (modules) ctx.serialize(id + "_assets", modules);
782
- ctx.serialize(id, "$$f");
783
- return signals.runWithOwner(fallbackOwner, () => props.fallback);
784
- }
785
- function NoHydration(props) {
786
- const o = signals.createOwner();
787
- return signals.runWithOwner(o, () => {
788
- signals.setContext(NoHydrateContext, true);
789
- return props.children;
790
- });
791
- }
792
- function Hydration(props) {
793
- if (!signals.getContext(NoHydrateContext)) return props.children;
794
- const o = signals.createOwner({
795
- id: props.id ?? ""
796
- });
797
- return signals.runWithOwner(o, () => {
798
- signals.setContext(NoHydrateContext, false);
799
- return props.children;
1188
+ });
1189
+ const result = props.children;
1190
+ if (parentGroup && keys.length === 0) {
1191
+ parentGroup.onResolved(id);
1192
+ }
1193
+ return result;
800
1194
  });
1195
+ function markMinimallyResolved(key) {
1196
+ if (minimallyResolved.has(key)) return;
1197
+ minimallyResolved.add(key);
1198
+ updateSelfMinimallyResolved();
1199
+ if (order === "together") checkTogetherRelease();
1200
+ }
801
1201
  }
802
1202
 
803
1203
  const DEV = undefined;
@@ -806,6 +1206,10 @@ Object.defineProperty(exports, "$PROXY", {
806
1206
  enumerable: true,
807
1207
  get: function () { return signals.$PROXY; }
808
1208
  });
1209
+ Object.defineProperty(exports, "$REFRESH", {
1210
+ enumerable: true,
1211
+ get: function () { return signals.$REFRESH; }
1212
+ });
809
1213
  Object.defineProperty(exports, "$TRACK", {
810
1214
  enumerable: true,
811
1215
  get: function () { return signals.$TRACK; }
@@ -822,6 +1226,14 @@ Object.defineProperty(exports, "createRoot", {
822
1226
  enumerable: true,
823
1227
  get: function () { return signals.createRoot; }
824
1228
  });
1229
+ Object.defineProperty(exports, "enableExternalSource", {
1230
+ enumerable: true,
1231
+ get: function () { return signals.enableExternalSource; }
1232
+ });
1233
+ Object.defineProperty(exports, "enforceLoadingBoundary", {
1234
+ enumerable: true,
1235
+ get: function () { return signals.enforceLoadingBoundary; }
1236
+ });
825
1237
  Object.defineProperty(exports, "flatten", {
826
1238
  enumerable: true,
827
1239
  get: function () { return signals.flatten; }
@@ -834,6 +1246,10 @@ Object.defineProperty(exports, "getOwner", {
834
1246
  enumerable: true,
835
1247
  get: function () { return signals.getOwner; }
836
1248
  });
1249
+ Object.defineProperty(exports, "isDisposed", {
1250
+ enumerable: true,
1251
+ get: function () { return signals.isDisposed; }
1252
+ });
837
1253
  Object.defineProperty(exports, "isEqual", {
838
1254
  enumerable: true,
839
1255
  get: function () { return signals.isEqual; }
@@ -876,6 +1292,7 @@ exports.Match = Match;
876
1292
  exports.NoHydrateContext = NoHydrateContext;
877
1293
  exports.NoHydration = NoHydration;
878
1294
  exports.Repeat = Repeat;
1295
+ exports.Reveal = Reveal;
879
1296
  exports.Show = Show;
880
1297
  exports.Switch = Switch;
881
1298
  exports.action = action;
@@ -884,12 +1301,15 @@ exports.createComponent = createComponent;
884
1301
  exports.createContext = createContext;
885
1302
  exports.createDeepProxy = createDeepProxy;
886
1303
  exports.createEffect = createEffect;
1304
+ exports.createErrorBoundary = createErrorBoundary;
1305
+ exports.createLoadingBoundary = createLoadingBoundary;
887
1306
  exports.createMemo = createMemo;
888
1307
  exports.createOptimistic = createOptimistic;
889
1308
  exports.createOptimisticStore = createOptimisticStore;
890
1309
  exports.createProjection = createProjection;
891
1310
  exports.createReaction = createReaction;
892
1311
  exports.createRenderEffect = createRenderEffect;
1312
+ exports.createRevealOrder = createRevealOrder;
893
1313
  exports.createSignal = createSignal;
894
1314
  exports.createStore = createStore;
895
1315
  exports.createTrackedEffect = createTrackedEffect;