solid-js 2.0.0-beta.1 → 2.0.0-beta.3

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/server.cjs CHANGED
@@ -30,25 +30,12 @@ function getObserver() {
30
30
  }
31
31
  function createSignal(first, second, third) {
32
32
  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 ? {
33
+ const opts = third?.deferStream || third?.ssrSource ? {
42
34
  deferStream: third?.deferStream,
43
- ssrSource
35
+ ssrSource: third?.ssrSource
44
36
  } : 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)];
37
+ const memo = createMemo(prev => first(prev), second, opts);
38
+ return [memo, () => undefined];
52
39
  }
53
40
  return [() => first, v => {
54
41
  return first = typeof v === "function" ? v(first) : v;
@@ -185,42 +172,39 @@ function processResult(comp, result, owner, ctx, deferStream, ssrSource) {
185
172
  const promise = iter.next().then(v => {
186
173
  promise.s = 1;
187
174
  promise.v = v.value;
188
- if (comp.disposed) return;
175
+ if (comp.disposed) return v.value;
189
176
  comp.value = v.value;
190
177
  comp.error = undefined;
178
+ return v.value;
191
179
  }, () => {});
192
180
  if (ctx?.async && ctx.serialize && id && !noHydrate) ctx.serialize(id, promise, deferStream);
193
- if (uninitialized) {
194
- comp.error = new signals.NotReadyError(promise);
195
- }
181
+ comp.error = new signals.NotReadyError(promise);
196
182
  } else {
197
183
  const firstNext = iter.next();
198
184
  const firstReady = firstNext.then(r => {
199
185
  if (comp.disposed) return;
200
186
  if (!r.done) {
201
187
  comp.value = r.value;
202
- comp.error = undefined;
203
188
  }
189
+ comp.error = undefined;
190
+ return Promise.resolve();
204
191
  }, () => {});
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
- });
192
+ if (ctx?.async && ctx.serialize && id && !noHydrate) {
193
+ let tappedFirst = true;
194
+ const tapped = {
195
+ [Symbol.asyncIterator]: () => ({
196
+ next() {
197
+ if (tappedFirst) {
198
+ tappedFirst = false;
199
+ return firstNext.then(r => r);
200
+ }
201
+ return iter.next().then(r => r);
215
202
  }
216
- return iter.next().then(r => r);
217
- }
218
- })
219
- };
220
- if (ctx?.async && ctx.serialize && id && !noHydrate) ctx.serialize(id, tapped, deferStream);
221
- if (uninitialized) {
222
- comp.error = new signals.NotReadyError(firstReady);
203
+ })
204
+ };
205
+ ctx.serialize(id, tapped, deferStream);
223
206
  }
207
+ comp.error = new signals.NotReadyError(firstReady);
224
208
  }
225
209
  return;
226
210
  }
@@ -329,13 +313,14 @@ function createProjection(fn, initialValue = {}, options) {
329
313
  promise.s = 1;
330
314
  if (disposed) {
331
315
  promise.v = state;
332
- return;
316
+ return state;
333
317
  }
334
318
  if (r.value !== undefined && r.value !== state) {
335
319
  Object.assign(state, r.value);
336
320
  }
337
321
  promise.v = state;
338
322
  markReady();
323
+ return state;
339
324
  }, () => {});
340
325
  if (ctx?.async && !signals.getContext(NoHydrateContext) && owner.id) ctx.serialize(owner.id, promise, options?.deferStream);
341
326
  const [pending, markReady] = createPendingProxy(state, promise);
@@ -351,50 +336,53 @@ function createProjection(fn, initialValue = {}, options) {
351
336
  }
352
337
  }
353
338
  markReady(JSON.parse(JSON.stringify(state)));
339
+ return Promise.resolve();
354
340
  }, () => {
355
341
  markReady();
356
342
  });
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
343
+ if (ctx?.async && !signals.getContext(NoHydrateContext) && owner.id) {
344
+ let tappedFirst = true;
345
+ const tapped = {
346
+ [Symbol.asyncIterator]: () => ({
347
+ next() {
348
+ if (tappedFirst) {
349
+ tappedFirst = false;
350
+ return firstNext.then(r => {
351
+ if (r.done) return {
352
+ done: true,
353
+ value: undefined
354
+ };
355
+ return {
356
+ done: false,
357
+ value: JSON.parse(JSON.stringify(state))
358
+ };
359
+ });
360
+ }
361
+ return iter.next().then(r => {
362
+ if (disposed) return {
363
+ done: true,
364
+ value: undefined
367
365
  };
366
+ const flushed = patches.splice(0);
367
+ if (!r.done) {
368
+ if (r.value !== undefined && r.value !== draft) {
369
+ Object.assign(state, r.value);
370
+ }
371
+ return {
372
+ done: false,
373
+ value: flushed
374
+ };
375
+ }
368
376
  return {
369
- done: r.done,
377
+ done: true,
370
378
  value: undefined
371
379
  };
372
380
  });
373
381
  }
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);
382
+ })
383
+ };
384
+ ctx.serialize(owner.id, tapped, options?.deferStream);
385
+ }
398
386
  const [pending, markReady] = createPendingProxy(state, firstReady);
399
387
  return pending;
400
388
  }
@@ -505,7 +493,7 @@ function createErrorBoundary(fn, fallback) {
505
493
  return () => result;
506
494
  });
507
495
  }
508
- function createLoadBoundary(fn, fallback) {
496
+ function createLoadingBoundary(fn, fallback, options) {
509
497
  try {
510
498
  const result = fn();
511
499
  return () => result;
@@ -713,7 +701,7 @@ function ssrHandleError(err) {
713
701
  function Loading(props) {
714
702
  const ctx = sharedConfig.context;
715
703
  if (!ctx) {
716
- return createLoadBoundary(() => props.children, () => props.fallback);
704
+ return createLoadingBoundary(() => props.children, () => props.fallback);
717
705
  }
718
706
  const o = signals.createOwner();
719
707
  const id = o.id;
@@ -806,6 +794,10 @@ Object.defineProperty(exports, "$PROXY", {
806
794
  enumerable: true,
807
795
  get: function () { return signals.$PROXY; }
808
796
  });
797
+ Object.defineProperty(exports, "$REFRESH", {
798
+ enumerable: true,
799
+ get: function () { return signals.$REFRESH; }
800
+ });
809
801
  Object.defineProperty(exports, "$TRACK", {
810
802
  enumerable: true,
811
803
  get: function () { return signals.$TRACK; }
@@ -822,6 +814,14 @@ Object.defineProperty(exports, "createRoot", {
822
814
  enumerable: true,
823
815
  get: function () { return signals.createRoot; }
824
816
  });
817
+ Object.defineProperty(exports, "enableExternalSource", {
818
+ enumerable: true,
819
+ get: function () { return signals.enableExternalSource; }
820
+ });
821
+ Object.defineProperty(exports, "enforceLoadingBoundary", {
822
+ enumerable: true,
823
+ get: function () { return signals.enforceLoadingBoundary; }
824
+ });
825
825
  Object.defineProperty(exports, "flatten", {
826
826
  enumerable: true,
827
827
  get: function () { return signals.flatten; }
@@ -884,6 +884,8 @@ exports.createComponent = createComponent;
884
884
  exports.createContext = createContext;
885
885
  exports.createDeepProxy = createDeepProxy;
886
886
  exports.createEffect = createEffect;
887
+ exports.createErrorBoundary = createErrorBoundary;
888
+ exports.createLoadingBoundary = createLoadingBoundary;
887
889
  exports.createMemo = createMemo;
888
890
  exports.createOptimistic = createOptimistic;
889
891
  exports.createOptimisticStore = createOptimisticStore;
package/dist/server.js CHANGED
@@ -1,5 +1,5 @@
1
- import { getOwner, getContext, getNextChildId, createOwner, runWithOwner, onCleanup, NotReadyError, isWrappable, setContext, flatten, createRoot } from '@solidjs/signals';
2
- export { $PROXY, $TRACK, NotReadyError, createOwner, createRoot, flatten, getNextChildId, getOwner, isEqual, isWrappable, merge, omit, onCleanup, runWithOwner, snapshot, storePath } from '@solidjs/signals';
1
+ import { getOwner, getContext, getNextChildId, createOwner, runWithOwner, setContext, NotReadyError, onCleanup, isWrappable, flatten, createRoot } from '@solidjs/signals';
2
+ export { $PROXY, $REFRESH, $TRACK, NotReadyError, createOwner, createRoot, enableExternalSource, enforceLoadingBoundary, flatten, getNextChildId, getOwner, isEqual, isWrappable, merge, omit, onCleanup, runWithOwner, snapshot, storePath } from '@solidjs/signals';
3
3
 
4
4
  const NoHydrateContext = {
5
5
  id: Symbol("NoHydrateContext"),
@@ -29,25 +29,12 @@ function getObserver() {
29
29
  }
30
30
  function createSignal(first, second, third) {
31
31
  if (typeof first === "function") {
32
- const ssrSource = third?.ssrSource;
33
- if (ssrSource === "initial" || ssrSource === "client") {
34
- createOwner();
35
- let value = second;
36
- return [() => value, v => {
37
- return value = typeof v === "function" ? v(value) : v;
38
- }];
39
- }
40
- const memoOpts = third?.deferStream || ssrSource ? {
32
+ const opts = third?.deferStream || third?.ssrSource ? {
41
33
  deferStream: third?.deferStream,
42
- ssrSource
34
+ ssrSource: third?.ssrSource
43
35
  } : undefined;
44
- const memo = createMemo(p => {
45
- let value = first(p ? p[0]() : second);
46
- return [() => value, v => {
47
- return value = typeof v === "function" ? v(value) : v;
48
- }];
49
- }, undefined, memoOpts);
50
- return [() => memo()[0](), v => memo()[1](v)];
36
+ const memo = createMemo(prev => first(prev), second, opts);
37
+ return [memo, () => undefined];
51
38
  }
52
39
  return [() => first, v => {
53
40
  return first = typeof v === "function" ? v(first) : v;
@@ -184,42 +171,39 @@ function processResult(comp, result, owner, ctx, deferStream, ssrSource) {
184
171
  const promise = iter.next().then(v => {
185
172
  promise.s = 1;
186
173
  promise.v = v.value;
187
- if (comp.disposed) return;
174
+ if (comp.disposed) return v.value;
188
175
  comp.value = v.value;
189
176
  comp.error = undefined;
177
+ return v.value;
190
178
  }, () => {});
191
179
  if (ctx?.async && ctx.serialize && id && !noHydrate) ctx.serialize(id, promise, deferStream);
192
- if (uninitialized) {
193
- comp.error = new NotReadyError(promise);
194
- }
180
+ comp.error = new NotReadyError(promise);
195
181
  } else {
196
182
  const firstNext = iter.next();
197
183
  const firstReady = firstNext.then(r => {
198
184
  if (comp.disposed) return;
199
185
  if (!r.done) {
200
186
  comp.value = r.value;
201
- comp.error = undefined;
202
187
  }
188
+ comp.error = undefined;
189
+ return Promise.resolve();
203
190
  }, () => {});
204
- let servedFirst = false;
205
- const tapped = {
206
- [Symbol.asyncIterator]: () => ({
207
- next() {
208
- if (!servedFirst) {
209
- servedFirst = true;
210
- return firstNext.then(r => {
211
- if (!r.done && !comp.disposed) comp.value = r.value;
212
- return r;
213
- });
191
+ if (ctx?.async && ctx.serialize && id && !noHydrate) {
192
+ let tappedFirst = true;
193
+ const tapped = {
194
+ [Symbol.asyncIterator]: () => ({
195
+ next() {
196
+ if (tappedFirst) {
197
+ tappedFirst = false;
198
+ return firstNext.then(r => r);
199
+ }
200
+ return iter.next().then(r => r);
214
201
  }
215
- return iter.next().then(r => r);
216
- }
217
- })
218
- };
219
- if (ctx?.async && ctx.serialize && id && !noHydrate) ctx.serialize(id, tapped, deferStream);
220
- if (uninitialized) {
221
- comp.error = new NotReadyError(firstReady);
202
+ })
203
+ };
204
+ ctx.serialize(id, tapped, deferStream);
222
205
  }
206
+ comp.error = new NotReadyError(firstReady);
223
207
  }
224
208
  return;
225
209
  }
@@ -328,13 +312,14 @@ function createProjection(fn, initialValue = {}, options) {
328
312
  promise.s = 1;
329
313
  if (disposed) {
330
314
  promise.v = state;
331
- return;
315
+ return state;
332
316
  }
333
317
  if (r.value !== undefined && r.value !== state) {
334
318
  Object.assign(state, r.value);
335
319
  }
336
320
  promise.v = state;
337
321
  markReady();
322
+ return state;
338
323
  }, () => {});
339
324
  if (ctx?.async && !getContext(NoHydrateContext) && owner.id) ctx.serialize(owner.id, promise, options?.deferStream);
340
325
  const [pending, markReady] = createPendingProxy(state, promise);
@@ -350,50 +335,53 @@ function createProjection(fn, initialValue = {}, options) {
350
335
  }
351
336
  }
352
337
  markReady(JSON.parse(JSON.stringify(state)));
338
+ return Promise.resolve();
353
339
  }, () => {
354
340
  markReady();
355
341
  });
356
- let servedFirst = false;
357
- const tapped = {
358
- [Symbol.asyncIterator]: () => ({
359
- next() {
360
- if (!servedFirst) {
361
- servedFirst = true;
362
- return firstNext.then(r => {
363
- if (!r.done && !disposed) return {
364
- done: false,
365
- value: state
342
+ if (ctx?.async && !getContext(NoHydrateContext) && owner.id) {
343
+ let tappedFirst = true;
344
+ const tapped = {
345
+ [Symbol.asyncIterator]: () => ({
346
+ next() {
347
+ if (tappedFirst) {
348
+ tappedFirst = false;
349
+ return firstNext.then(r => {
350
+ if (r.done) return {
351
+ done: true,
352
+ value: undefined
353
+ };
354
+ return {
355
+ done: false,
356
+ value: JSON.parse(JSON.stringify(state))
357
+ };
358
+ });
359
+ }
360
+ return iter.next().then(r => {
361
+ if (disposed) return {
362
+ done: true,
363
+ value: undefined
366
364
  };
365
+ const flushed = patches.splice(0);
366
+ if (!r.done) {
367
+ if (r.value !== undefined && r.value !== draft) {
368
+ Object.assign(state, r.value);
369
+ }
370
+ return {
371
+ done: false,
372
+ value: flushed
373
+ };
374
+ }
367
375
  return {
368
- done: r.done,
376
+ done: true,
369
377
  value: undefined
370
378
  };
371
379
  });
372
380
  }
373
- return iter.next().then(r => {
374
- if (disposed) return {
375
- done: true,
376
- value: undefined
377
- };
378
- const flushed = patches.splice(0);
379
- if (!r.done) {
380
- if (r.value !== undefined && r.value !== draft) {
381
- Object.assign(state, r.value);
382
- }
383
- return {
384
- done: false,
385
- value: flushed
386
- };
387
- }
388
- return {
389
- done: true,
390
- value: undefined
391
- };
392
- });
393
- }
394
- })
395
- };
396
- if (ctx?.async && !getContext(NoHydrateContext) && owner.id) ctx.serialize(owner.id, tapped, options?.deferStream);
381
+ })
382
+ };
383
+ ctx.serialize(owner.id, tapped, options?.deferStream);
384
+ }
397
385
  const [pending, markReady] = createPendingProxy(state, firstReady);
398
386
  return pending;
399
387
  }
@@ -504,7 +492,7 @@ function createErrorBoundary(fn, fallback) {
504
492
  return () => result;
505
493
  });
506
494
  }
507
- function createLoadBoundary(fn, fallback) {
495
+ function createLoadingBoundary(fn, fallback, options) {
508
496
  try {
509
497
  const result = fn();
510
498
  return () => result;
@@ -712,7 +700,7 @@ function ssrHandleError(err) {
712
700
  function Loading(props) {
713
701
  const ctx = sharedConfig.context;
714
702
  if (!ctx) {
715
- return createLoadBoundary(() => props.children, () => props.fallback);
703
+ return createLoadingBoundary(() => props.children, () => props.fallback);
716
704
  }
717
705
  const o = createOwner();
718
706
  const id = o.id;
@@ -801,4 +789,4 @@ function Hydration(props) {
801
789
 
802
790
  const DEV = undefined;
803
791
 
804
- export { $DEVCOMP, DEV, Errored, For, Hydration, Loading, Match, NoHydrateContext, NoHydration, Repeat, Show, Switch, action, children, createComponent, createContext, createDeepProxy, createEffect, createMemo, createOptimistic, createOptimisticStore, createProjection, createReaction, createRenderEffect, createSignal, createStore, createTrackedEffect, createUniqueId, deep, enableHydration, flush, getObserver, isPending, isRefreshing, latest, lazy, mapArray, onSettled, reconcile, refresh, repeat, resolve, sharedConfig, ssrHandleError, ssrRunInScope, untrack, useContext };
792
+ export { $DEVCOMP, DEV, Errored, For, Hydration, Loading, Match, NoHydrateContext, NoHydration, Repeat, Show, Switch, action, children, createComponent, createContext, createDeepProxy, createEffect, createErrorBoundary, createLoadingBoundary, createMemo, createOptimistic, createOptimisticStore, createProjection, createReaction, createRenderEffect, createSignal, createStore, createTrackedEffect, createUniqueId, deep, enableHydration, flush, getObserver, isPending, isRefreshing, latest, lazy, mapArray, onSettled, reconcile, refresh, repeat, resolve, sharedConfig, ssrHandleError, ssrRunInScope, untrack, useContext };