solid-js 2.0.0-experimental.7 → 2.0.0-experimental.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/dev.cjs CHANGED
@@ -53,6 +53,27 @@ function registerGraph(value) {
53
53
  value.graph = owner;
54
54
  }
55
55
 
56
+ function tryCatch(fn) {
57
+ try {
58
+ const v = fn();
59
+ if (v instanceof Promise) {
60
+ return v.then(v => [undefined, v], e => {
61
+ if (e instanceof signals.NotReadyError) throw e;
62
+ return [e];
63
+ });
64
+ }
65
+ return [undefined, v];
66
+ } catch (e) {
67
+ if (e instanceof signals.NotReadyError) throw e;
68
+ return [e];
69
+ }
70
+ }
71
+ function reducer(source, reducerFn) {
72
+ return [source[0], action => {
73
+ source[1](s => reducerFn(s, action));
74
+ }];
75
+ }
76
+
56
77
  function observable(input) {
57
78
  return {
58
79
  subscribe(observer) {
@@ -347,6 +368,10 @@ Object.defineProperty(exports, "createOptimistic", {
347
368
  enumerable: true,
348
369
  get: function () { return signals.createOptimistic; }
349
370
  });
371
+ Object.defineProperty(exports, "createOptimisticStore", {
372
+ enumerable: true,
373
+ get: function () { return signals.createOptimisticStore; }
374
+ });
350
375
  Object.defineProperty(exports, "createProjection", {
351
376
  enumerable: true,
352
377
  get: function () { return signals.createProjection; }
@@ -447,10 +472,6 @@ Object.defineProperty(exports, "transition", {
447
472
  enumerable: true,
448
473
  get: function () { return signals.transition; }
449
474
  });
450
- Object.defineProperty(exports, "tryCatch", {
451
- enumerable: true,
452
- get: function () { return signals.tryCatch; }
453
- });
454
475
  Object.defineProperty(exports, "untrack", {
455
476
  enumerable: true,
456
477
  get: function () { return signals.untrack; }
@@ -475,7 +496,9 @@ exports.from = from;
475
496
  exports.lazy = lazy;
476
497
  exports.observable = observable;
477
498
  exports.onMount = onMount;
499
+ exports.reducer = reducer;
478
500
  exports.sharedConfig = sharedConfig;
479
501
  exports.ssrHandleError = ssrHandleError;
480
502
  exports.ssrRunInScope = ssrRunInScope;
503
+ exports.tryCatch = tryCatch;
481
504
  exports.useContext = useContext;
package/dist/dev.js CHANGED
@@ -1,5 +1,5 @@
1
- import { createEffect, getContext, createMemo, flatten, createRoot, setContext, getOwner, untrack, onCleanup, createSignal, createSuspense, flush, runWithObserver, createAsync as createAsync$1, mapArray, repeat, createErrorBoundary, createBoundary } from '@solidjs/signals';
2
- export { $PROXY, $TRACK, createEffect, createMemo, createOptimistic, createProjection, createRenderEffect, createRoot, createSignal, createStore, deep, flatten, flush, getObserver, getOwner, isEqual, isPending, isWrappable, latest, mapArray, merge, omit, onCleanup, reconcile, repeat, resolve, runWithObserver, runWithOwner, snapshot, transition, tryCatch, untrack } from '@solidjs/signals';
1
+ import { createEffect, getContext, createMemo, flatten, createRoot, setContext, getOwner, untrack, NotReadyError, onCleanup, createSignal, createSuspense, flush, runWithObserver, createAsync as createAsync$1, mapArray, repeat, createErrorBoundary, createBoundary } from '@solidjs/signals';
2
+ export { $PROXY, $TRACK, createEffect, createMemo, createOptimistic, createOptimisticStore, createProjection, createRenderEffect, createRoot, createSignal, createStore, deep, flatten, flush, getObserver, getOwner, isEqual, isPending, isWrappable, latest, mapArray, merge, omit, onCleanup, reconcile, repeat, resolve, runWithObserver, runWithOwner, snapshot, transition, untrack } from '@solidjs/signals';
3
3
 
4
4
  const $DEVCOMP = Symbol("COMPONENT_DEV" );
5
5
  function onMount(fn) {
@@ -52,6 +52,27 @@ function registerGraph(value) {
52
52
  value.graph = owner;
53
53
  }
54
54
 
55
+ function tryCatch(fn) {
56
+ try {
57
+ const v = fn();
58
+ if (v instanceof Promise) {
59
+ return v.then(v => [undefined, v], e => {
60
+ if (e instanceof NotReadyError) throw e;
61
+ return [e];
62
+ });
63
+ }
64
+ return [undefined, v];
65
+ } catch (e) {
66
+ if (e instanceof NotReadyError) throw e;
67
+ return [e];
68
+ }
69
+ }
70
+ function reducer(source, reducerFn) {
71
+ return [source[0], action => {
72
+ source[1](s => reducerFn(s, action));
73
+ }];
74
+ }
75
+
55
76
  function observable(input) {
56
77
  return {
57
78
  subscribe(observer) {
@@ -326,4 +347,4 @@ if (globalThis) {
326
347
  if (!globalThis.Solid$$) globalThis.Solid$$ = true;else console.warn("You appear to have multiple instances of Solid. This can lead to unexpected behavior.");
327
348
  }
328
349
 
329
- export { $DEVCOMP, Boundary, DEV, ErrorBoundary, For, Match, Repeat, Show, Suspense, Switch, children, createAsync, createComponent, createContext, createUniqueId, enableHydration, from, lazy, observable, onMount, sharedConfig, ssrHandleError, ssrRunInScope, useContext };
350
+ export { $DEVCOMP, Boundary, DEV, ErrorBoundary, For, Match, Repeat, Show, Suspense, Switch, children, createAsync, createComponent, createContext, createUniqueId, enableHydration, from, lazy, observable, onMount, reducer, sharedConfig, ssrHandleError, ssrRunInScope, tryCatch, useContext };
package/dist/server.cjs CHANGED
@@ -320,6 +320,7 @@ function createAsync(compute, value, options) {
320
320
  return value;
321
321
  });
322
322
  }
323
+ const createOptimistic = createSignal;
323
324
  function isPending(fn, fallback) {
324
325
  try {
325
326
  fn();
@@ -409,6 +410,7 @@ function createProjection(fn, initialValue = {}) {
409
410
  fn(state);
410
411
  return state;
411
412
  }
413
+ const createOptimisticStore = createStore;
412
414
  function reconcile(value) {
413
415
  return state => {
414
416
  if (!isWrappable(state) || !isWrappable(value)) return value;
@@ -463,6 +465,15 @@ function omit(props, ...keys) {
463
465
  }
464
466
  return clone;
465
467
  }
468
+ function deep(store) {
469
+ return store;
470
+ }
471
+
472
+ function reducer(source, reducerFn) {
473
+ return [source[0], action => {
474
+ source[1](s => reducerFn(s, action));
475
+ }];
476
+ }
466
477
 
467
478
  const $DEVCOMP = Symbol("solid-dev-component");
468
479
  const DEV = undefined;
@@ -503,6 +514,10 @@ Object.defineProperty(exports, "runWithOwner", {
503
514
  enumerable: true,
504
515
  get: function () { return signals.runWithOwner; }
505
516
  });
517
+ Object.defineProperty(exports, "transition", {
518
+ enumerable: true,
519
+ get: function () { return signals.transition; }
520
+ });
506
521
  Object.defineProperty(exports, "tryCatch", {
507
522
  enumerable: true,
508
523
  get: function () { return signals.tryCatch; }
@@ -522,11 +537,14 @@ exports.createComponent = createComponent;
522
537
  exports.createContext = createContext;
523
538
  exports.createEffect = createEffect;
524
539
  exports.createMemo = createMemo;
540
+ exports.createOptimistic = createOptimistic;
541
+ exports.createOptimisticStore = createOptimisticStore;
525
542
  exports.createProjection = createProjection;
526
543
  exports.createRenderEffect = createRenderEffect;
527
544
  exports.createSignal = createSignal;
528
545
  exports.createStore = createStore;
529
546
  exports.createUniqueId = createUniqueId;
547
+ exports.deep = deep;
530
548
  exports.enableHydration = enableHydration;
531
549
  exports.flush = flush;
532
550
  exports.from = from;
@@ -540,6 +558,7 @@ exports.observable = observable;
540
558
  exports.omit = omit;
541
559
  exports.onMount = onMount;
542
560
  exports.reconcile = reconcile;
561
+ exports.reducer = reducer;
543
562
  exports.repeat = repeat;
544
563
  exports.resolve = resolve;
545
564
  exports.runWithObserver = runWithObserver;
package/dist/server.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { getContext, onCleanup, Owner, runWithOwner, createRoot, setContext, flatten, NotReadyError, getOwner } from '@solidjs/signals';
2
- export { $PROXY, $TRACK, createRoot, flatten, getOwner, isEqual, isWrappable, onCleanup, runWithOwner, tryCatch } from '@solidjs/signals';
2
+ export { $PROXY, $TRACK, createRoot, flatten, getOwner, isEqual, isWrappable, onCleanup, runWithOwner, transition, tryCatch } from '@solidjs/signals';
3
3
 
4
4
  function onMount(fn) {
5
5
  createEffect();
@@ -319,6 +319,7 @@ function createAsync(compute, value, options) {
319
319
  return value;
320
320
  });
321
321
  }
322
+ const createOptimistic = createSignal;
322
323
  function isPending(fn, fallback) {
323
324
  try {
324
325
  fn();
@@ -408,6 +409,7 @@ function createProjection(fn, initialValue = {}) {
408
409
  fn(state);
409
410
  return state;
410
411
  }
412
+ const createOptimisticStore = createStore;
411
413
  function reconcile(value) {
412
414
  return state => {
413
415
  if (!isWrappable(state) || !isWrappable(value)) return value;
@@ -462,8 +464,17 @@ function omit(props, ...keys) {
462
464
  }
463
465
  return clone;
464
466
  }
467
+ function deep(store) {
468
+ return store;
469
+ }
470
+
471
+ function reducer(source, reducerFn) {
472
+ return [source[0], action => {
473
+ source[1](s => reducerFn(s, action));
474
+ }];
475
+ }
465
476
 
466
477
  const $DEVCOMP = Symbol("solid-dev-component");
467
478
  const DEV = undefined;
468
479
 
469
- export { $DEVCOMP, DEV, ErrorBoundary, For, Match, Repeat, Show, Suspense, Switch, children, createAsync, createComponent, createContext, createEffect, createMemo, createProjection, createRenderEffect, createSignal, createStore, createUniqueId, enableHydration, flush, from, getObserver, isPending, latest, lazy, mapArray, merge, observable, omit, onMount, reconcile, repeat, resolve, runWithObserver, sharedConfig, ssrHandleError, ssrRunInScope, untrack, unwrap, useContext };
480
+ export { $DEVCOMP, DEV, ErrorBoundary, For, Match, Repeat, Show, Suspense, Switch, children, createAsync, createComponent, createContext, createEffect, createMemo, createOptimistic, createOptimisticStore, createProjection, createRenderEffect, createSignal, createStore, createUniqueId, deep, enableHydration, flush, from, getObserver, isPending, latest, lazy, mapArray, merge, observable, omit, onMount, reconcile, reducer, repeat, resolve, runWithObserver, sharedConfig, ssrHandleError, ssrRunInScope, untrack, unwrap, useContext };
package/dist/solid.cjs CHANGED
@@ -31,6 +31,27 @@ function children(fn) {
31
31
  return memo;
32
32
  }
33
33
 
34
+ function tryCatch(fn) {
35
+ try {
36
+ const v = fn();
37
+ if (v instanceof Promise) {
38
+ return v.then(v => [undefined, v], e => {
39
+ if (e instanceof signals.NotReadyError) throw e;
40
+ return [e];
41
+ });
42
+ }
43
+ return [undefined, v];
44
+ } catch (e) {
45
+ if (e instanceof signals.NotReadyError) throw e;
46
+ return [e];
47
+ }
48
+ }
49
+ function reducer(source, reducerFn) {
50
+ return [source[0], action => {
51
+ source[1](s => reducerFn(s, action));
52
+ }];
53
+ }
54
+
34
55
  function observable(input) {
35
56
  return {
36
57
  subscribe(observer) {
@@ -300,6 +321,10 @@ Object.defineProperty(exports, "createOptimistic", {
300
321
  enumerable: true,
301
322
  get: function () { return signals.createOptimistic; }
302
323
  });
324
+ Object.defineProperty(exports, "createOptimisticStore", {
325
+ enumerable: true,
326
+ get: function () { return signals.createOptimisticStore; }
327
+ });
303
328
  Object.defineProperty(exports, "createProjection", {
304
329
  enumerable: true,
305
330
  get: function () { return signals.createProjection; }
@@ -400,10 +425,6 @@ Object.defineProperty(exports, "transition", {
400
425
  enumerable: true,
401
426
  get: function () { return signals.transition; }
402
427
  });
403
- Object.defineProperty(exports, "tryCatch", {
404
- enumerable: true,
405
- get: function () { return signals.tryCatch; }
406
- });
407
428
  Object.defineProperty(exports, "untrack", {
408
429
  enumerable: true,
409
430
  get: function () { return signals.untrack; }
@@ -428,7 +449,9 @@ exports.from = from;
428
449
  exports.lazy = lazy;
429
450
  exports.observable = observable;
430
451
  exports.onMount = onMount;
452
+ exports.reducer = reducer;
431
453
  exports.sharedConfig = sharedConfig;
432
454
  exports.ssrHandleError = ssrHandleError;
433
455
  exports.ssrRunInScope = ssrRunInScope;
456
+ exports.tryCatch = tryCatch;
434
457
  exports.useContext = useContext;
package/dist/solid.js CHANGED
@@ -1,5 +1,5 @@
1
- import { createEffect, getContext, createMemo, flatten, createRoot, setContext, getOwner, onCleanup, createSignal, createSuspense, flush, runWithObserver, createAsync as createAsync$1, untrack, mapArray, repeat, createErrorBoundary, createBoundary } from '@solidjs/signals';
2
- export { $PROXY, $TRACK, createEffect, createMemo, createOptimistic, createProjection, createRenderEffect, createRoot, createSignal, createStore, deep, flatten, flush, getObserver, getOwner, isEqual, isPending, isWrappable, latest, mapArray, merge, omit, onCleanup, reconcile, repeat, resolve, runWithObserver, runWithOwner, snapshot, transition, tryCatch, untrack } from '@solidjs/signals';
1
+ import { createEffect, getContext, createMemo, flatten, createRoot, setContext, NotReadyError, getOwner, onCleanup, createSignal, createSuspense, flush, runWithObserver, createAsync as createAsync$1, untrack, mapArray, repeat, createErrorBoundary, createBoundary } from '@solidjs/signals';
2
+ export { $PROXY, $TRACK, createEffect, createMemo, createOptimistic, createOptimisticStore, createProjection, createRenderEffect, createRoot, createSignal, createStore, deep, flatten, flush, getObserver, getOwner, isEqual, isPending, isWrappable, latest, mapArray, merge, omit, onCleanup, reconcile, repeat, resolve, runWithObserver, runWithOwner, snapshot, transition, untrack } from '@solidjs/signals';
3
3
 
4
4
  const $DEVCOMP = Symbol(0);
5
5
  function onMount(fn) {
@@ -30,6 +30,27 @@ function children(fn) {
30
30
  return memo;
31
31
  }
32
32
 
33
+ function tryCatch(fn) {
34
+ try {
35
+ const v = fn();
36
+ if (v instanceof Promise) {
37
+ return v.then(v => [undefined, v], e => {
38
+ if (e instanceof NotReadyError) throw e;
39
+ return [e];
40
+ });
41
+ }
42
+ return [undefined, v];
43
+ } catch (e) {
44
+ if (e instanceof NotReadyError) throw e;
45
+ return [e];
46
+ }
47
+ }
48
+ function reducer(source, reducerFn) {
49
+ return [source[0], action => {
50
+ source[1](s => reducerFn(s, action));
51
+ }];
52
+ }
53
+
33
54
  function observable(input) {
34
55
  return {
35
56
  subscribe(observer) {
@@ -279,4 +300,4 @@ function ssrHandleError() {}
279
300
  function ssrRunInScope() {}
280
301
  const DEV = undefined;
281
302
 
282
- export { $DEVCOMP, Boundary, DEV, ErrorBoundary, For, Match, Repeat, Show, Suspense, Switch, children, createAsync, createComponent, createContext, createUniqueId, enableHydration, from, lazy, observable, onMount, sharedConfig, ssrHandleError, ssrRunInScope, useContext };
303
+ export { $DEVCOMP, Boundary, DEV, ErrorBoundary, For, Match, Repeat, Show, Suspense, Switch, children, createAsync, createComponent, createContext, createUniqueId, enableHydration, from, lazy, observable, onMount, reducer, sharedConfig, ssrHandleError, ssrRunInScope, tryCatch, useContext };
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": "2.0.0-experimental.7",
4
+ "version": "2.0.0-experimental.8",
5
5
  "author": "Ryan Carniato",
6
6
  "license": "MIT",
7
7
  "homepage": "https://solidjs.com",
@@ -79,7 +79,7 @@
79
79
  "performance"
80
80
  ],
81
81
  "dependencies": {
82
- "@solidjs/signals": "^0.4.1",
82
+ "@solidjs/signals": "^0.5.0",
83
83
  "csstype": "^3.1.0",
84
84
  "seroval": "~1.3.0",
85
85
  "seroval-plugins": "~1.3.0"
package/types/index.d.ts CHANGED
@@ -1,7 +1,8 @@
1
- export { $PROXY, $TRACK, createEffect, createMemo, createOptimistic, createProjection, createRenderEffect, createRoot, createSignal, createStore, flatten, flush, getObserver, getOwner, isEqual, isPending, isWrappable, latest, mapArray, merge, omit, onCleanup, reconcile, repeat, resolve, runWithObserver, runWithOwner, snapshot, tryCatch, untrack, deep, transition } from "@solidjs/signals";
1
+ export { $PROXY, $TRACK, createEffect, createMemo, createOptimistic, createOptimisticStore, createProjection, createRenderEffect, createRoot, createSignal, createStore, flatten, flush, getObserver, getOwner, isEqual, isPending, isWrappable, latest, mapArray, merge, omit, onCleanup, reconcile, repeat, resolve, runWithObserver, runWithOwner, snapshot, untrack, deep, transition } from "@solidjs/signals";
2
2
  export type { Accessor, BoundaryMode, ComputeFunction, EffectFunction, EffectOptions, Merge, NoInfer, NotWrappable, Omit, Owner, Signal, SignalOptions, Setter, Store, SolidStore, StoreNode, StoreSetter, TryCatchResult } from "@solidjs/signals";
3
3
  export { $DEVCOMP, children, createContext, onMount, useContext } from "./client/core.js";
4
4
  export type { ChildrenReturn, Context, ContextProviderComponent, ResolvedChildren, ResolvedJSXElement } from "./client/core.js";
5
+ export * from "./utilities.js";
5
6
  export * from "./client/observable.js";
6
7
  export * from "./client/component.js";
7
8
  export * from "./client/flow.js";
@@ -1,8 +1,9 @@
1
- export { $PROXY, $TRACK, tryCatch, flatten, isEqual, isWrappable } from "@solidjs/signals";
2
- export { createAsync, createEffect, createMemo, createRenderEffect, createRoot, createSignal, flush, getObserver, getOwner, isPending, latest, mapArray, onCleanup, repeat, resolve, runWithObserver, runWithOwner, untrack } from "./signals.js";
1
+ export { $PROXY, $TRACK, tryCatch, flatten, isEqual, isWrappable, transition } from "@solidjs/signals";
2
+ export { createAsync, createEffect, createMemo, createOptimistic, createRenderEffect, createRoot, createSignal, flush, getObserver, getOwner, isPending, latest, mapArray, onCleanup, repeat, resolve, runWithObserver, runWithOwner, untrack } from "./signals.js";
3
3
  export { observable, from, children, createContext, onMount, useContext, ssrRunInScope } from "./reactive.js";
4
- export { createProjection, createStore, unwrap, reconcile, merge, omit } from "./store.js";
4
+ export { createProjection, createStore, createOptimisticStore, unwrap, reconcile, merge, omit, deep } from "./store.js";
5
5
  export { createComponent, For, Repeat, Show, Switch, Match, ErrorBoundary, Suspense, enableHydration, createUniqueId, lazy, sharedConfig, ssrHandleError } from "./rendering.js";
6
+ export * from "../utilities.js";
6
7
  export declare const $DEVCOMP: unique symbol;
7
8
  export declare const DEV: undefined;
8
9
  export type { Component } from "../index.js";
@@ -21,6 +21,7 @@ export declare function createEffect<Next, Init = Next>(compute: ComputeFunction
21
21
  export declare function createAsync<T>(compute: (prev?: T) => Promise<T> | AsyncIterable<T> | T, value?: T, options?: MemoOptions<T> & {
22
22
  deferStream?: boolean;
23
23
  }): Accessor<T>;
24
+ export declare const createOptimistic: typeof createSignal;
24
25
  export declare function isPending(fn: () => any, fallback?: boolean): boolean;
25
26
  export declare function latest<T>(fn: () => T, fallback?: T): T | undefined;
26
27
  export declare function resolve(): void;
@@ -4,6 +4,8 @@ export declare function isWrappable(obj: any): boolean;
4
4
  export declare function unwrap<T>(item: T): T;
5
5
  export declare function createStore<T>(state: T | Store<T>): [get: Store<T>, set: StoreSetter<T>];
6
6
  export declare function createProjection<T extends Object>(fn: (draft: T) => void, initialValue?: T): Store<T>;
7
+ export declare const createOptimisticStore: typeof createStore;
7
8
  export declare function reconcile<T extends U, U extends object>(value: T): (state: U) => T;
8
9
  export declare function merge<T extends unknown[]>(...sources: T): Merge<T>;
9
10
  export declare function omit<T extends Record<any, any>, K extends readonly (keyof T)[]>(props: T, ...keys: K): Omit<T, K>;
11
+ export declare function deep<T extends object>(store: Store<T>): Store<T>;
@@ -0,0 +1,36 @@
1
+ import { Accessor, Signal, Store, StoreSetter } from "@solidjs/signals";
2
+ /**
3
+ * Runs the given function and returns a tuple with the result or an error.
4
+ * If the function throws an error, it will be caught and returned as the first element of the tuple.
5
+ * If the function returns a promise, it will resolve to a tuple with the result or an error.
6
+ *
7
+ * @param fn The function to run.
8
+ * @returns A tuple with either [undefined, result] or [error].
9
+ *
10
+ * @description https://docs.solidjs.com/reference/reactive-utilities/try-catch
11
+ */
12
+ export type TryCatchResult<T, E> = [undefined, T] | [E];
13
+ export declare function tryCatch<T, E = Error>(fn: () => Promise<T>): Promise<TryCatchResult<T, E>>;
14
+ export declare function tryCatch<T, E = Error>(fn: () => T): TryCatchResult<T, E>;
15
+ /**
16
+ * Simple reducer utility for Signals and Stores
17
+ * ```typescript
18
+ * const [state, dispatch] = reducer(createSignal({ count: 0 }), (state, action) => {
19
+ * switch (action.type) {
20
+ * case "increment":
21
+ * return { count: state.count + 1 };
22
+ * case "decrement":
23
+ * return { count: state.count - 1 };
24
+ * default:
25
+ * return state;
26
+ * }
27
+ * });
28
+ * ```
29
+ * @param source Signal or Store tuple
30
+ * @param reducerFn reducer function that receives the current value and an action, and returns the new value for signals or void for stores
31
+ * @returns a tuple with the current value accessor and a dispatch function to send actions to the reducer
32
+ *
33
+ * @description https://docs.solidjs.com/reference/reactive-utilities/reducer
34
+ */
35
+ export declare function reducer<T, A>(source: Signal<T>, reducerFn: (value: T, action: A) => T): [Accessor<T>, (action: A) => void];
36
+ export declare function reducer<T, A>(source: [Store<T>, StoreSetter<T>], reducerFn: (value: T, action: A) => T | void): [Store<T>, (action: A) => void];