solid-js 1.8.8 → 1.8.9

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 (51) hide show
  1. package/dist/dev.cjs +17 -21
  2. package/dist/dev.js +554 -321
  3. package/dist/server.js +170 -75
  4. package/dist/solid.cjs +17 -21
  5. package/dist/solid.js +481 -279
  6. package/h/dist/h.js +34 -8
  7. package/h/jsx-runtime/dist/jsx.js +1 -1
  8. package/h/jsx-runtime/types/index.d.ts +11 -8
  9. package/h/jsx-runtime/types/jsx.d.ts +2 -1
  10. package/h/types/hyperscript.d.ts +11 -11
  11. package/html/dist/html.js +216 -94
  12. package/html/types/lit.d.ts +47 -33
  13. package/package.json +3 -2
  14. package/store/dist/dev.cjs +1 -1
  15. package/store/dist/dev.js +117 -42
  16. package/store/dist/server.js +19 -8
  17. package/store/dist/store.cjs +1 -1
  18. package/store/dist/store.js +108 -39
  19. package/store/types/index.d.ts +21 -7
  20. package/store/types/modifiers.d.ts +6 -3
  21. package/store/types/mutable.d.ts +5 -2
  22. package/store/types/server.d.ts +12 -4
  23. package/store/types/store.d.ts +218 -61
  24. package/types/index.d.ts +75 -10
  25. package/types/jsx.d.ts +2 -1
  26. package/types/reactive/array.d.ts +12 -4
  27. package/types/reactive/observable.d.ts +25 -17
  28. package/types/reactive/scheduler.d.ts +9 -6
  29. package/types/reactive/signal.d.ts +233 -142
  30. package/types/render/Suspense.d.ts +5 -5
  31. package/types/render/component.d.ts +64 -33
  32. package/types/render/flow.d.ts +43 -31
  33. package/types/render/hydration.d.ts +13 -13
  34. package/types/server/index.d.ts +57 -2
  35. package/types/server/reactive.d.ts +73 -42
  36. package/types/server/rendering.d.ts +167 -96
  37. package/universal/dist/dev.js +28 -12
  38. package/universal/dist/universal.js +28 -12
  39. package/universal/types/index.d.ts +3 -1
  40. package/universal/types/universal.d.ts +0 -1
  41. package/web/dist/dev.cjs +1 -1
  42. package/web/dist/dev.js +621 -82
  43. package/web/dist/server.cjs +30 -27
  44. package/web/dist/server.js +232 -121
  45. package/web/dist/storage.js +3 -3
  46. package/web/dist/web.cjs +1 -1
  47. package/web/dist/web.js +615 -81
  48. package/web/types/client.d.ts +2 -2
  49. package/web/types/core.d.ts +10 -1
  50. package/web/types/index.d.ts +27 -10
  51. package/web/types/server-mock.d.ts +47 -32
@@ -1,4 +1,4 @@
1
- import { $PROXY, $TRACK, getListener, batch, createSignal } from 'solid-js';
1
+ import { $PROXY, $TRACK, getListener, batch, createSignal } from "solid-js";
2
2
 
3
3
  const $RAW = Symbol("store-raw"),
4
4
  $NODE = Symbol("store-node"),
@@ -8,7 +8,7 @@ function wrap$1(value) {
8
8
  let p = value[$PROXY];
9
9
  if (!p) {
10
10
  Object.defineProperty(value, $PROXY, {
11
- value: p = new Proxy(value, proxyTraps$1)
11
+ value: (p = new Proxy(value, proxyTraps$1))
12
12
  });
13
13
  if (!Array.isArray(value)) {
14
14
  const keys = Object.keys(value),
@@ -28,20 +28,29 @@ function wrap$1(value) {
28
28
  }
29
29
  function isWrappable(obj) {
30
30
  let proto;
31
- return obj != null && typeof obj === "object" && (obj[$PROXY] || !(proto = Object.getPrototypeOf(obj)) || proto === Object.prototype || Array.isArray(obj));
31
+ return (
32
+ obj != null &&
33
+ typeof obj === "object" &&
34
+ (obj[$PROXY] ||
35
+ !(proto = Object.getPrototypeOf(obj)) ||
36
+ proto === Object.prototype ||
37
+ Array.isArray(obj))
38
+ );
32
39
  }
33
40
  function unwrap(item, set = new Set()) {
34
41
  let result, unwrapped, v, prop;
35
- if (result = item != null && item[$RAW]) return result;
42
+ if ((result = item != null && item[$RAW])) return result;
36
43
  if (!isWrappable(item) || set.has(item)) return item;
37
44
  if (Array.isArray(item)) {
38
- if (Object.isFrozen(item)) item = item.slice(0);else set.add(item);
45
+ if (Object.isFrozen(item)) item = item.slice(0);
46
+ else set.add(item);
39
47
  for (let i = 0, l = item.length; i < l; i++) {
40
48
  v = item[i];
41
49
  if ((unwrapped = unwrap(v, set)) !== v) item[i] = unwrapped;
42
50
  }
43
51
  } else {
44
- if (Object.isFrozen(item)) item = Object.assign({}, item);else set.add(item);
52
+ if (Object.isFrozen(item)) item = Object.assign({}, item);
53
+ else set.add(item);
45
54
  const keys = Object.keys(item),
46
55
  desc = Object.getOwnPropertyDescriptors(item);
47
56
  for (let i = 0, l = keys.length; i < l; i++) {
@@ -55,9 +64,10 @@ function unwrap(item, set = new Set()) {
55
64
  }
56
65
  function getNodes(target, symbol) {
57
66
  let nodes = target[symbol];
58
- if (!nodes) Object.defineProperty(target, symbol, {
59
- value: nodes = Object.create(null)
60
- });
67
+ if (!nodes)
68
+ Object.defineProperty(target, symbol, {
69
+ value: (nodes = Object.create(null))
70
+ });
61
71
  return nodes;
62
72
  }
63
73
  function getNode(nodes, property, value) {
@@ -67,11 +77,12 @@ function getNode(nodes, property, value) {
67
77
  internal: true
68
78
  });
69
79
  s.$ = set;
70
- return nodes[property] = s;
80
+ return (nodes[property] = s);
71
81
  }
72
82
  function proxyDescriptor$1(target, property) {
73
83
  const desc = Reflect.getOwnPropertyDescriptor(target, property);
74
- if (!desc || desc.get || !desc.configurable || property === $PROXY || property === $NODE) return desc;
84
+ if (!desc || desc.get || !desc.configurable || property === $PROXY || property === $NODE)
85
+ return desc;
75
86
  delete desc.value;
76
87
  delete desc.writable;
77
88
  desc.get = () => target[$PROXY][property];
@@ -98,12 +109,25 @@ const proxyTraps$1 = {
98
109
  if (property === $NODE || property === $HAS || property === "__proto__") return value;
99
110
  if (!tracked) {
100
111
  const desc = Object.getOwnPropertyDescriptor(target, property);
101
- if (getListener() && (typeof value !== "function" || target.hasOwnProperty(property)) && !(desc && desc.get)) value = getNode(nodes, property, value)();
112
+ if (
113
+ getListener() &&
114
+ (typeof value !== "function" || target.hasOwnProperty(property)) &&
115
+ !(desc && desc.get)
116
+ )
117
+ value = getNode(nodes, property, value)();
102
118
  }
103
119
  return isWrappable(value) ? wrap$1(value) : value;
104
120
  },
105
121
  has(target, property) {
106
- if (property === $RAW || property === $PROXY || property === $TRACK || property === $NODE || property === $HAS || property === "__proto__") return true;
122
+ if (
123
+ property === $RAW ||
124
+ property === $PROXY ||
125
+ property === $TRACK ||
126
+ property === $NODE ||
127
+ property === $HAS ||
128
+ property === "__proto__"
129
+ )
130
+ return true;
107
131
  getListener() && getNode(getNodes(target, $HAS), property)();
108
132
  return property in target;
109
133
  },
@@ -129,7 +153,7 @@ function setProperty(state, property, value, deleting = false) {
129
153
  }
130
154
  let nodes = getNodes(state, $NODE),
131
155
  node;
132
- if (node = getNode(nodes, property, prev)) node.$(() => value);
156
+ if ((node = getNode(nodes, property, prev))) node.$(() => value);
133
157
  if (Array.isArray(state) && state.length !== len) {
134
158
  for (let i = state.length; i < len; i++) (node = nodes[i]) && node.$();
135
159
  (node = getNode(nodes, "length", len)) && node.$(state.length);
@@ -175,11 +199,7 @@ function updatePath(current, path, traversed = []) {
175
199
  }
176
200
  return;
177
201
  } else if (isArray && partType === "object") {
178
- const {
179
- from = 0,
180
- to = current.length - 1,
181
- by = 1
182
- } = part;
202
+ const { from = 0, to = current.length - 1, by = 1 } = part;
183
203
  for (let i = from; i <= to; i += by) {
184
204
  updatePath(current, [i].concat(path), traversed);
185
205
  }
@@ -198,7 +218,7 @@ function updatePath(current, path, traversed = []) {
198
218
  }
199
219
  if (part === undefined && value == undefined) return;
200
220
  value = unwrap(value);
201
- if (part === undefined || isWrappable(prev) && isWrappable(value) && !Array.isArray(value)) {
221
+ if (part === undefined || (isWrappable(prev) && isWrappable(value) && !Array.isArray(value))) {
202
222
  mergeStoreNode(prev, value);
203
223
  } else setProperty(current, part, value);
204
224
  }
@@ -208,7 +228,9 @@ function createStore(...[store, options]) {
208
228
  const wrappedStore = wrap$1(unwrappedStore);
209
229
  function setStore(...args) {
210
230
  batch(() => {
211
- isArray && args.length === 1 ? updateArray(unwrappedStore, args[0]) : updatePath(unwrappedStore, args);
231
+ isArray && args.length === 1
232
+ ? updateArray(unwrappedStore, args[0])
233
+ : updatePath(unwrappedStore, args);
212
234
  });
213
235
  }
214
236
  return [wrappedStore, setStore];
@@ -216,11 +238,19 @@ function createStore(...[store, options]) {
216
238
 
217
239
  function proxyDescriptor(target, property) {
218
240
  const desc = Reflect.getOwnPropertyDescriptor(target, property);
219
- if (!desc || desc.get || desc.set || !desc.configurable || property === $PROXY || property === $NODE) return desc;
241
+ if (
242
+ !desc ||
243
+ desc.get ||
244
+ desc.set ||
245
+ !desc.configurable ||
246
+ property === $PROXY ||
247
+ property === $NODE
248
+ )
249
+ return desc;
220
250
  delete desc.value;
221
251
  delete desc.writable;
222
252
  desc.get = () => target[$PROXY][property];
223
- desc.set = v => target[$PROXY][property] = v;
253
+ desc.set = v => (target[$PROXY][property] = v);
224
254
  return desc;
225
255
  }
226
256
  const proxyTraps = {
@@ -238,14 +268,24 @@ const proxyTraps = {
238
268
  if (!tracked) {
239
269
  const desc = Object.getOwnPropertyDescriptor(target, property);
240
270
  const isFunction = typeof value === "function";
241
- if (getListener() && (!isFunction || target.hasOwnProperty(property)) && !(desc && desc.get)) value = getNode(nodes, property, value)();else if (value != null && isFunction && value === Array.prototype[property]) {
271
+ if (getListener() && (!isFunction || target.hasOwnProperty(property)) && !(desc && desc.get))
272
+ value = getNode(nodes, property, value)();
273
+ else if (value != null && isFunction && value === Array.prototype[property]) {
242
274
  return (...args) => batch(() => Array.prototype[property].apply(receiver, args));
243
275
  }
244
276
  }
245
277
  return isWrappable(value) ? wrap(value) : value;
246
278
  },
247
279
  has(target, property) {
248
- if (property === $RAW || property === $PROXY || property === $TRACK || property === $NODE || property === $HAS || property === "__proto__") return true;
280
+ if (
281
+ property === $RAW ||
282
+ property === $PROXY ||
283
+ property === $TRACK ||
284
+ property === $NODE ||
285
+ property === $HAS ||
286
+ property === "__proto__"
287
+ )
288
+ return true;
249
289
  getListener() && getNode(getNodes(target, $HAS), property)();
250
290
  return property in target;
251
291
  },
@@ -264,7 +304,7 @@ function wrap(value) {
264
304
  let p = value[$PROXY];
265
305
  if (!p) {
266
306
  Object.defineProperty(value, $PROXY, {
267
- value: p = new Proxy(value, proxyTraps)
307
+ value: (p = new Proxy(value, proxyTraps))
268
308
  });
269
309
  const keys = Object.keys(value),
270
310
  desc = Object.getOwnPropertyDescriptors(value);
@@ -301,19 +341,42 @@ function applyState(target, parent, property, merge, key) {
301
341
  const previous = parent[property];
302
342
  if (target === previous) return;
303
343
  const isArray = Array.isArray(target);
304
- if (property !== $ROOT && (!isWrappable(target) || !isWrappable(previous) || isArray && !Array.isArray(previous) || key && target[key] !== previous[key])) {
344
+ if (
345
+ property !== $ROOT &&
346
+ (!isWrappable(target) ||
347
+ !isWrappable(previous) ||
348
+ isArray !== Array.isArray(previous) ||
349
+ (key && target[key] !== previous[key]))
350
+ ) {
305
351
  setProperty(parent, property, target);
306
352
  return;
307
353
  }
308
354
  if (isArray) {
309
- if (target.length && previous.length && (!merge || key && target[0] && target[0][key] != null)) {
355
+ if (
356
+ target.length &&
357
+ previous.length &&
358
+ (!merge || (key && target[0] && target[0][key] != null))
359
+ ) {
310
360
  let i, j, start, end, newEnd, item, newIndicesNext, keyVal;
311
- for (start = 0, end = Math.min(previous.length, target.length); start < end && (previous[start] === target[start] || key && previous[start] && target[start] && previous[start][key] === target[start][key]); start++) {
361
+ for (
362
+ start = 0, end = Math.min(previous.length, target.length);
363
+ start < end &&
364
+ (previous[start] === target[start] ||
365
+ (key && previous[start] && target[start] && previous[start][key] === target[start][key]));
366
+ start++
367
+ ) {
312
368
  applyState(target[start], previous, start, merge, key);
313
369
  }
314
370
  const temp = new Array(target.length),
315
371
  newIndices = new Map();
316
- for (end = previous.length - 1, newEnd = target.length - 1; end >= start && newEnd >= start && (previous[end] === target[newEnd] || key && previous[start] && target[start] && previous[end][key] === target[newEnd][key]); end--, newEnd--) {
372
+ for (
373
+ end = previous.length - 1, newEnd = target.length - 1;
374
+ end >= start &&
375
+ newEnd >= start &&
376
+ (previous[end] === target[newEnd] ||
377
+ (key && previous[start] && target[start] && previous[end][key] === target[newEnd][key]));
378
+ end--, newEnd--
379
+ ) {
317
380
  temp[newEnd] = previous[end];
318
381
  }
319
382
  if (start > newEnd || start > end) {
@@ -367,16 +430,19 @@ function applyState(target, parent, property, merge, key) {
367
430
  }
368
431
  }
369
432
  function reconcile(value, options = {}) {
370
- const {
371
- merge,
372
- key = "id"
373
- } = options,
433
+ const { merge, key = "id" } = options,
374
434
  v = unwrap(value);
375
435
  return state => {
376
436
  if (!isWrappable(state) || !isWrappable(v)) return v;
377
- const res = applyState(v, {
378
- [$ROOT]: state
379
- }, $ROOT, merge, key);
437
+ const res = applyState(
438
+ v,
439
+ {
440
+ [$ROOT]: state
441
+ },
442
+ $ROOT,
443
+ merge,
444
+ key
445
+ );
380
446
  return res === undefined ? state : res;
381
447
  };
382
448
  }
@@ -386,7 +452,10 @@ const setterTraps = {
386
452
  if (property === $RAW) return target;
387
453
  const value = target[property];
388
454
  let proxy;
389
- return isWrappable(value) ? producers.get(value) || (producers.set(value, proxy = new Proxy(value, setterTraps)), proxy) : value;
455
+ return isWrappable(value)
456
+ ? producers.get(value) ||
457
+ (producers.set(value, (proxy = new Proxy(value, setterTraps))), proxy)
458
+ : value;
390
459
  },
391
460
  set(target, property, value) {
392
461
  setProperty(target, property, unwrap(value));
@@ -402,7 +471,7 @@ function produce(fn) {
402
471
  if (isWrappable(state)) {
403
472
  let proxy;
404
473
  if (!(proxy = producers.get(state))) {
405
- producers.set(state, proxy = new Proxy(state, setterTraps));
474
+ producers.set(state, (proxy = new Proxy(state, setterTraps)));
406
475
  }
407
476
  fn(proxy);
408
477
  }
@@ -1,12 +1,26 @@
1
1
  export { $RAW, createStore, unwrap } from "./store.js";
2
- export type { ArrayFilterFn, DeepMutable, DeepReadonly, NotWrappable, Part, SetStoreFunction, SolidStore, Store, StoreNode, StorePathRange, StoreSetter } from "./store.js";
2
+ export type {
3
+ ArrayFilterFn,
4
+ DeepMutable,
5
+ DeepReadonly,
6
+ NotWrappable,
7
+ Part,
8
+ SetStoreFunction,
9
+ SolidStore,
10
+ Store,
11
+ StoreNode,
12
+ StorePathRange,
13
+ StoreSetter
14
+ } from "./store.js";
3
15
  export * from "./mutable.js";
4
16
  export * from "./modifiers.js";
5
17
  import { $NODE, isWrappable } from "./store.js";
6
- export declare const DEV: {
7
- readonly $NODE: typeof $NODE;
8
- readonly isWrappable: typeof isWrappable;
9
- readonly hooks: {
18
+ export declare const DEV:
19
+ | {
20
+ readonly $NODE: typeof $NODE;
21
+ readonly isWrappable: typeof isWrappable;
22
+ readonly hooks: {
10
23
  onStoreNodeUpdate: import("./store.js").OnStoreNodeUpdate | null;
11
- };
12
- } | undefined;
24
+ };
25
+ }
26
+ | undefined;
@@ -1,6 +1,9 @@
1
1
  export type ReconcileOptions = {
2
- key?: string | null;
3
- merge?: boolean;
2
+ key?: string | null;
3
+ merge?: boolean;
4
4
  };
5
- export declare function reconcile<T extends U, U>(value: T, options?: ReconcileOptions): (state: U) => T;
5
+ export declare function reconcile<T extends U, U>(
6
+ value: T,
7
+ options?: ReconcileOptions
8
+ ): (state: U) => T;
6
9
  export declare function produce<T>(fn: (state: T) => void): (state: T) => T;
@@ -1,5 +1,8 @@
1
1
  import { StoreNode } from "./store.js";
2
- export declare function createMutable<T extends StoreNode>(state: T, options?: {
2
+ export declare function createMutable<T extends StoreNode>(
3
+ state: T,
4
+ options?: {
3
5
  name?: string;
4
- }): T;
6
+ }
7
+ ): T;
5
8
  export declare function modifyMutable<T>(state: T, modifier: (state: T) => T): void;
@@ -2,15 +2,23 @@ import type { SetStoreFunction, Store } from "./store.js";
2
2
  export declare const $RAW: unique symbol;
3
3
  export declare function isWrappable(obj: any): boolean;
4
4
  export declare function unwrap<T>(item: T): T;
5
- export declare function setProperty(state: any, property: PropertyKey, value: any, force?: boolean): void;
5
+ export declare function setProperty(
6
+ state: any,
7
+ property: PropertyKey,
8
+ value: any,
9
+ force?: boolean
10
+ ): void;
6
11
  export declare function updatePath(current: any, path: any[], traversed?: PropertyKey[]): void;
7
12
  export declare function createStore<T>(state: T | Store<T>): [Store<T>, SetStoreFunction<T>];
8
13
  export declare function createMutable<T>(state: T | Store<T>): T;
9
14
  type ReconcileOptions = {
10
- key?: string | null;
11
- merge?: boolean;
15
+ key?: string | null;
16
+ merge?: boolean;
12
17
  };
13
- export declare function reconcile<T extends U, U extends object>(value: T, options?: ReconcileOptions): (state: U) => T;
18
+ export declare function reconcile<T extends U, U extends object>(
19
+ value: T,
20
+ options?: ReconcileOptions
21
+ ): (state: U) => T;
14
22
  export declare function produce<T>(fn: (state: T) => void): (state: T) => T;
15
23
  export declare const DEV: undefined;
16
24
  export {};