solid-js 1.7.7 → 1.7.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 (53) hide show
  1. package/dist/dev.cjs +24 -13
  2. package/dist/dev.js +555 -306
  3. package/dist/server.cjs +3 -3
  4. package/dist/server.js +177 -79
  5. package/dist/solid.cjs +24 -13
  6. package/dist/solid.js +482 -264
  7. package/h/dist/h.cjs +2 -2
  8. package/h/dist/h.js +36 -10
  9. package/h/jsx-runtime/dist/jsx.js +1 -1
  10. package/h/jsx-runtime/types/index.d.ts +11 -8
  11. package/h/jsx-runtime/types/jsx.d.ts +130 -100
  12. package/h/types/hyperscript.d.ts +11 -11
  13. package/h/types/index.d.ts +3 -2
  14. package/html/dist/html.cjs +2 -2
  15. package/html/dist/html.js +218 -96
  16. package/html/types/index.d.ts +3 -2
  17. package/html/types/lit.d.ts +45 -31
  18. package/package.json +1 -1
  19. package/store/dist/dev.cjs +34 -32
  20. package/store/dist/dev.js +141 -67
  21. package/store/dist/server.js +19 -8
  22. package/store/dist/store.cjs +34 -32
  23. package/store/dist/store.js +132 -64
  24. package/store/types/index.d.ts +21 -7
  25. package/store/types/modifiers.d.ts +6 -3
  26. package/store/types/mutable.d.ts +5 -2
  27. package/store/types/server.d.ts +12 -4
  28. package/store/types/store.d.ts +217 -63
  29. package/types/index.d.ts +69 -9
  30. package/types/jsx.d.ts +10 -6
  31. package/types/reactive/array.d.ts +12 -4
  32. package/types/reactive/observable.d.ts +25 -17
  33. package/types/reactive/scheduler.d.ts +9 -6
  34. package/types/reactive/signal.d.ts +227 -136
  35. package/types/render/Suspense.d.ts +5 -5
  36. package/types/render/component.d.ts +62 -31
  37. package/types/render/flow.d.ts +43 -31
  38. package/types/render/hydration.d.ts +13 -10
  39. package/types/server/index.d.ts +55 -2
  40. package/types/server/reactive.d.ts +67 -40
  41. package/types/server/rendering.d.ts +171 -95
  42. package/universal/dist/dev.js +28 -12
  43. package/universal/dist/universal.js +28 -12
  44. package/universal/types/index.d.ts +3 -1
  45. package/universal/types/universal.d.ts +0 -1
  46. package/web/dist/dev.js +610 -79
  47. package/web/dist/server.cjs +4 -4
  48. package/web/dist/server.js +180 -81
  49. package/web/dist/web.js +610 -79
  50. package/web/types/client.d.ts +2 -2
  51. package/web/types/core.d.ts +10 -1
  52. package/web/types/index.d.ts +27 -10
  53. package/web/types/server-mock.d.ts +47 -32
@@ -3,7 +3,8 @@
3
3
  var solidJs = require('solid-js');
4
4
 
5
5
  const $RAW = Symbol("store-raw"),
6
- $NODE = Symbol("store-node");
6
+ $NODE = Symbol("store-node"),
7
+ $HAS = Symbol("store-has");
7
8
  function wrap$1(value) {
8
9
  let p = value[solidJs.$PROXY];
9
10
  if (!p) {
@@ -53,15 +54,21 @@ function unwrap(item, set = new Set()) {
53
54
  }
54
55
  return item;
55
56
  }
56
- function getDataNodes(target) {
57
- let nodes = target[$NODE];
58
- if (!nodes) Object.defineProperty(target, $NODE, {
57
+ function getNodes(target, symbol) {
58
+ let nodes = target[symbol];
59
+ if (!nodes) Object.defineProperty(target, symbol, {
59
60
  value: nodes = Object.create(null)
60
61
  });
61
62
  return nodes;
62
63
  }
63
- function getDataNode(nodes, property, value) {
64
- return nodes[property] || (nodes[property] = createDataNode(value));
64
+ function getNode(nodes, property, value) {
65
+ if (nodes[property]) return nodes[property];
66
+ const [s, set] = solidJs.createSignal(value, {
67
+ equals: false,
68
+ internal: true
69
+ });
70
+ s.$ = set;
71
+ return nodes[property] = s;
65
72
  }
66
73
  function proxyDescriptor$1(target, property) {
67
74
  const desc = Reflect.getOwnPropertyDescriptor(target, property);
@@ -72,23 +79,12 @@ function proxyDescriptor$1(target, property) {
72
79
  return desc;
73
80
  }
74
81
  function trackSelf(target) {
75
- if (solidJs.getListener()) {
76
- const nodes = getDataNodes(target);
77
- (nodes._ || (nodes._ = createDataNode()))();
78
- }
82
+ solidJs.getListener() && getNode(getNodes(target, $NODE), "_")();
79
83
  }
80
84
  function ownKeys(target) {
81
85
  trackSelf(target);
82
86
  return Reflect.ownKeys(target);
83
87
  }
84
- function createDataNode(value) {
85
- const [s, set] = solidJs.createSignal(value, {
86
- equals: false,
87
- internal: true
88
- });
89
- s.$ = set;
90
- return s;
91
- }
92
88
  const proxyTraps$1 = {
93
89
  get(target, property, receiver) {
94
90
  if (property === $RAW) return target;
@@ -97,19 +93,19 @@ const proxyTraps$1 = {
97
93
  trackSelf(target);
98
94
  return receiver;
99
95
  }
100
- const nodes = getDataNodes(target);
96
+ const nodes = getNodes(target, $NODE);
101
97
  const tracked = nodes[property];
102
98
  let value = tracked ? tracked() : target[property];
103
- if (property === $NODE || property === "__proto__") return value;
99
+ if (property === $NODE || property === $HAS || property === "__proto__") return value;
104
100
  if (!tracked) {
105
101
  const desc = Object.getOwnPropertyDescriptor(target, property);
106
- if (solidJs.getListener() && (typeof value !== "function" || target.hasOwnProperty(property)) && !(desc && desc.get)) value = getDataNode(nodes, property, value)();
102
+ if (solidJs.getListener() && (typeof value !== "function" || target.hasOwnProperty(property)) && !(desc && desc.get)) value = getNode(nodes, property, value)();
107
103
  }
108
104
  return isWrappable(value) ? wrap$1(value) : value;
109
105
  },
110
106
  has(target, property) {
111
- if (property === $RAW || property === solidJs.$PROXY || property === solidJs.$TRACK || property === $NODE || property === "__proto__") return true;
112
- this.get(target, property, target);
107
+ if (property === $RAW || property === solidJs.$PROXY || property === solidJs.$TRACK || property === $NODE || property === $HAS || property === "__proto__") return true;
108
+ solidJs.getListener() && getNode(getNodes(target, $HAS), property)();
113
109
  return property in target;
114
110
  },
115
111
  set() {
@@ -125,13 +121,19 @@ function setProperty(state, property, value, deleting = false) {
125
121
  if (!deleting && state[property] === value) return;
126
122
  const prev = state[property],
127
123
  len = state.length;
128
- if (value === undefined) delete state[property];else state[property] = value;
129
- let nodes = getDataNodes(state),
124
+ if (value === undefined) {
125
+ delete state[property];
126
+ if (state[$HAS] && state[$HAS][property] && prev !== undefined) state[$HAS][property].$();
127
+ } else {
128
+ state[property] = value;
129
+ if (state[$HAS] && state[$HAS][property] && prev === undefined) state[$HAS][property].$();
130
+ }
131
+ let nodes = getNodes(state, $NODE),
130
132
  node;
131
- if (node = getDataNode(nodes, property, prev)) node.$(() => value);
133
+ if (node = getNode(nodes, property, prev)) node.$(() => value);
132
134
  if (Array.isArray(state) && state.length !== len) {
133
135
  for (let i = state.length; i < len; i++) (node = nodes[i]) && node.$();
134
- (node = getDataNode(nodes, "length", len)) && node.$(state.length);
136
+ (node = getNode(nodes, "length", len)) && node.$(state.length);
135
137
  }
136
138
  (node = nodes._) && node.$();
137
139
  }
@@ -230,22 +232,22 @@ const proxyTraps = {
230
232
  trackSelf(target);
231
233
  return receiver;
232
234
  }
233
- const nodes = getDataNodes(target);
235
+ const nodes = getNodes(target, $NODE);
234
236
  const tracked = nodes[property];
235
237
  let value = tracked ? tracked() : target[property];
236
- if (property === $NODE || property === "__proto__") return value;
238
+ if (property === $NODE || property === $HAS || property === "__proto__") return value;
237
239
  if (!tracked) {
238
240
  const desc = Object.getOwnPropertyDescriptor(target, property);
239
241
  const isFunction = typeof value === "function";
240
- if (solidJs.getListener() && (!isFunction || target.hasOwnProperty(property)) && !(desc && desc.get)) value = getDataNode(nodes, property, value)();else if (value != null && isFunction && value === Array.prototype[property]) {
242
+ if (solidJs.getListener() && (!isFunction || target.hasOwnProperty(property)) && !(desc && desc.get)) value = getNode(nodes, property, value)();else if (value != null && isFunction && value === Array.prototype[property]) {
241
243
  return (...args) => solidJs.batch(() => Array.prototype[property].apply(receiver, args));
242
244
  }
243
245
  }
244
246
  return isWrappable(value) ? wrap(value) : value;
245
247
  },
246
248
  has(target, property) {
247
- if (property === $RAW || property === solidJs.$PROXY || property === solidJs.$TRACK || property === $NODE || property === "__proto__") return true;
248
- this.get(target, property, target);
249
+ if (property === $RAW || property === solidJs.$PROXY || property === solidJs.$TRACK || property === $NODE || property === $HAS || property === "__proto__") return true;
250
+ solidJs.getListener() && getNode(getNodes(target, $HAS), property)();
249
251
  return property in target;
250
252
  },
251
253
  set(target, property, value) {
@@ -1,12 +1,13 @@
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
- $NODE = Symbol("store-node");
4
+ $NODE = Symbol("store-node"),
5
+ $HAS = Symbol("store-has");
5
6
  function wrap$1(value) {
6
7
  let p = value[$PROXY];
7
8
  if (!p) {
8
9
  Object.defineProperty(value, $PROXY, {
9
- value: p = new Proxy(value, proxyTraps$1)
10
+ value: (p = new Proxy(value, proxyTraps$1))
10
11
  });
11
12
  if (!Array.isArray(value)) {
12
13
  const keys = Object.keys(value),
@@ -26,20 +27,29 @@ function wrap$1(value) {
26
27
  }
27
28
  function isWrappable(obj) {
28
29
  let proto;
29
- return obj != null && typeof obj === "object" && (obj[$PROXY] || !(proto = Object.getPrototypeOf(obj)) || proto === Object.prototype || Array.isArray(obj));
30
+ return (
31
+ obj != null &&
32
+ typeof obj === "object" &&
33
+ (obj[$PROXY] ||
34
+ !(proto = Object.getPrototypeOf(obj)) ||
35
+ proto === Object.prototype ||
36
+ Array.isArray(obj))
37
+ );
30
38
  }
31
39
  function unwrap(item, set = new Set()) {
32
40
  let result, unwrapped, v, prop;
33
- if (result = item != null && item[$RAW]) return result;
41
+ if ((result = item != null && item[$RAW])) return result;
34
42
  if (!isWrappable(item) || set.has(item)) return item;
35
43
  if (Array.isArray(item)) {
36
- if (Object.isFrozen(item)) item = item.slice(0);else set.add(item);
44
+ if (Object.isFrozen(item)) item = item.slice(0);
45
+ else set.add(item);
37
46
  for (let i = 0, l = item.length; i < l; i++) {
38
47
  v = item[i];
39
48
  if ((unwrapped = unwrap(v, set)) !== v) item[i] = unwrapped;
40
49
  }
41
50
  } else {
42
- if (Object.isFrozen(item)) item = Object.assign({}, item);else set.add(item);
51
+ if (Object.isFrozen(item)) item = Object.assign({}, item);
52
+ else set.add(item);
43
53
  const keys = Object.keys(item),
44
54
  desc = Object.getOwnPropertyDescriptors(item);
45
55
  for (let i = 0, l = keys.length; i < l; i++) {
@@ -51,42 +61,39 @@ function unwrap(item, set = new Set()) {
51
61
  }
52
62
  return item;
53
63
  }
54
- function getDataNodes(target) {
55
- let nodes = target[$NODE];
56
- if (!nodes) Object.defineProperty(target, $NODE, {
57
- value: nodes = Object.create(null)
58
- });
64
+ function getNodes(target, symbol) {
65
+ let nodes = target[symbol];
66
+ if (!nodes)
67
+ Object.defineProperty(target, symbol, {
68
+ value: (nodes = Object.create(null))
69
+ });
59
70
  return nodes;
60
71
  }
61
- function getDataNode(nodes, property, value) {
62
- return nodes[property] || (nodes[property] = createDataNode(value));
72
+ function getNode(nodes, property, value) {
73
+ if (nodes[property]) return nodes[property];
74
+ const [s, set] = createSignal(value, {
75
+ equals: false,
76
+ internal: true
77
+ });
78
+ s.$ = set;
79
+ return (nodes[property] = s);
63
80
  }
64
81
  function proxyDescriptor$1(target, property) {
65
82
  const desc = Reflect.getOwnPropertyDescriptor(target, property);
66
- if (!desc || desc.get || !desc.configurable || property === $PROXY || property === $NODE) return desc;
83
+ if (!desc || desc.get || !desc.configurable || property === $PROXY || property === $NODE)
84
+ return desc;
67
85
  delete desc.value;
68
86
  delete desc.writable;
69
87
  desc.get = () => target[$PROXY][property];
70
88
  return desc;
71
89
  }
72
90
  function trackSelf(target) {
73
- if (getListener()) {
74
- const nodes = getDataNodes(target);
75
- (nodes._ || (nodes._ = createDataNode()))();
76
- }
91
+ getListener() && getNode(getNodes(target, $NODE), "_")();
77
92
  }
78
93
  function ownKeys(target) {
79
94
  trackSelf(target);
80
95
  return Reflect.ownKeys(target);
81
96
  }
82
- function createDataNode(value) {
83
- const [s, set] = createSignal(value, {
84
- equals: false,
85
- internal: true
86
- });
87
- s.$ = set;
88
- return s;
89
- }
90
97
  const proxyTraps$1 = {
91
98
  get(target, property, receiver) {
92
99
  if (property === $RAW) return target;
@@ -95,19 +102,32 @@ const proxyTraps$1 = {
95
102
  trackSelf(target);
96
103
  return receiver;
97
104
  }
98
- const nodes = getDataNodes(target);
105
+ const nodes = getNodes(target, $NODE);
99
106
  const tracked = nodes[property];
100
107
  let value = tracked ? tracked() : target[property];
101
- if (property === $NODE || property === "__proto__") return value;
108
+ if (property === $NODE || property === $HAS || property === "__proto__") return value;
102
109
  if (!tracked) {
103
110
  const desc = Object.getOwnPropertyDescriptor(target, property);
104
- if (getListener() && (typeof value !== "function" || target.hasOwnProperty(property)) && !(desc && desc.get)) value = getDataNode(nodes, property, value)();
111
+ if (
112
+ getListener() &&
113
+ (typeof value !== "function" || target.hasOwnProperty(property)) &&
114
+ !(desc && desc.get)
115
+ )
116
+ value = getNode(nodes, property, value)();
105
117
  }
106
118
  return isWrappable(value) ? wrap$1(value) : value;
107
119
  },
108
120
  has(target, property) {
109
- if (property === $RAW || property === $PROXY || property === $TRACK || property === $NODE || property === "__proto__") return true;
110
- this.get(target, property, target);
121
+ if (
122
+ property === $RAW ||
123
+ property === $PROXY ||
124
+ property === $TRACK ||
125
+ property === $NODE ||
126
+ property === $HAS ||
127
+ property === "__proto__"
128
+ )
129
+ return true;
130
+ getListener() && getNode(getNodes(target, $HAS), property)();
111
131
  return property in target;
112
132
  },
113
133
  set() {
@@ -123,13 +143,19 @@ function setProperty(state, property, value, deleting = false) {
123
143
  if (!deleting && state[property] === value) return;
124
144
  const prev = state[property],
125
145
  len = state.length;
126
- if (value === undefined) delete state[property];else state[property] = value;
127
- let nodes = getDataNodes(state),
146
+ if (value === undefined) {
147
+ delete state[property];
148
+ if (state[$HAS] && state[$HAS][property] && prev !== undefined) state[$HAS][property].$();
149
+ } else {
150
+ state[property] = value;
151
+ if (state[$HAS] && state[$HAS][property] && prev === undefined) state[$HAS][property].$();
152
+ }
153
+ let nodes = getNodes(state, $NODE),
128
154
  node;
129
- if (node = getDataNode(nodes, property, prev)) node.$(() => value);
155
+ if ((node = getNode(nodes, property, prev))) node.$(() => value);
130
156
  if (Array.isArray(state) && state.length !== len) {
131
157
  for (let i = state.length; i < len; i++) (node = nodes[i]) && node.$();
132
- (node = getDataNode(nodes, "length", len)) && node.$(state.length);
158
+ (node = getNode(nodes, "length", len)) && node.$(state.length);
133
159
  }
134
160
  (node = nodes._) && node.$();
135
161
  }
@@ -172,11 +198,7 @@ function updatePath(current, path, traversed = []) {
172
198
  }
173
199
  return;
174
200
  } else if (isArray && partType === "object") {
175
- const {
176
- from = 0,
177
- to = current.length - 1,
178
- by = 1
179
- } = part;
201
+ const { from = 0, to = current.length - 1, by = 1 } = part;
180
202
  for (let i = from; i <= to; i += by) {
181
203
  updatePath(current, [i].concat(path), traversed);
182
204
  }
@@ -195,7 +217,7 @@ function updatePath(current, path, traversed = []) {
195
217
  }
196
218
  if (part === undefined && value == undefined) return;
197
219
  value = unwrap(value);
198
- if (part === undefined || isWrappable(prev) && isWrappable(value) && !Array.isArray(value)) {
220
+ if (part === undefined || (isWrappable(prev) && isWrappable(value) && !Array.isArray(value))) {
199
221
  mergeStoreNode(prev, value);
200
222
  } else setProperty(current, part, value);
201
223
  }
@@ -205,7 +227,9 @@ function createStore(...[store, options]) {
205
227
  const wrappedStore = wrap$1(unwrappedStore);
206
228
  function setStore(...args) {
207
229
  batch(() => {
208
- isArray && args.length === 1 ? updateArray(unwrappedStore, args[0]) : updatePath(unwrappedStore, args);
230
+ isArray && args.length === 1
231
+ ? updateArray(unwrappedStore, args[0])
232
+ : updatePath(unwrappedStore, args);
209
233
  });
210
234
  }
211
235
  return [wrappedStore, setStore];
@@ -213,11 +237,19 @@ function createStore(...[store, options]) {
213
237
 
214
238
  function proxyDescriptor(target, property) {
215
239
  const desc = Reflect.getOwnPropertyDescriptor(target, property);
216
- if (!desc || desc.get || desc.set || !desc.configurable || property === $PROXY || property === $NODE) return desc;
240
+ if (
241
+ !desc ||
242
+ desc.get ||
243
+ desc.set ||
244
+ !desc.configurable ||
245
+ property === $PROXY ||
246
+ property === $NODE
247
+ )
248
+ return desc;
217
249
  delete desc.value;
218
250
  delete desc.writable;
219
251
  desc.get = () => target[$PROXY][property];
220
- desc.set = v => target[$PROXY][property] = v;
252
+ desc.set = v => (target[$PROXY][property] = v);
221
253
  return desc;
222
254
  }
223
255
  const proxyTraps = {
@@ -228,22 +260,32 @@ const proxyTraps = {
228
260
  trackSelf(target);
229
261
  return receiver;
230
262
  }
231
- const nodes = getDataNodes(target);
263
+ const nodes = getNodes(target, $NODE);
232
264
  const tracked = nodes[property];
233
265
  let value = tracked ? tracked() : target[property];
234
- if (property === $NODE || property === "__proto__") return value;
266
+ if (property === $NODE || property === $HAS || property === "__proto__") return value;
235
267
  if (!tracked) {
236
268
  const desc = Object.getOwnPropertyDescriptor(target, property);
237
269
  const isFunction = typeof value === "function";
238
- if (getListener() && (!isFunction || target.hasOwnProperty(property)) && !(desc && desc.get)) value = getDataNode(nodes, property, value)();else if (value != null && isFunction && value === Array.prototype[property]) {
270
+ if (getListener() && (!isFunction || target.hasOwnProperty(property)) && !(desc && desc.get))
271
+ value = getNode(nodes, property, value)();
272
+ else if (value != null && isFunction && value === Array.prototype[property]) {
239
273
  return (...args) => batch(() => Array.prototype[property].apply(receiver, args));
240
274
  }
241
275
  }
242
276
  return isWrappable(value) ? wrap(value) : value;
243
277
  },
244
278
  has(target, property) {
245
- if (property === $RAW || property === $PROXY || property === $TRACK || property === $NODE || property === "__proto__") return true;
246
- this.get(target, property, target);
279
+ if (
280
+ property === $RAW ||
281
+ property === $PROXY ||
282
+ property === $TRACK ||
283
+ property === $NODE ||
284
+ property === $HAS ||
285
+ property === "__proto__"
286
+ )
287
+ return true;
288
+ getListener() && getNode(getNodes(target, $HAS), property)();
247
289
  return property in target;
248
290
  },
249
291
  set(target, property, value) {
@@ -261,7 +303,7 @@ function wrap(value) {
261
303
  let p = value[$PROXY];
262
304
  if (!p) {
263
305
  Object.defineProperty(value, $PROXY, {
264
- value: p = new Proxy(value, proxyTraps)
306
+ value: (p = new Proxy(value, proxyTraps))
265
307
  });
266
308
  const keys = Object.keys(value),
267
309
  desc = Object.getOwnPropertyDescriptors(value);
@@ -297,19 +339,39 @@ const $ROOT = Symbol("store-root");
297
339
  function applyState(target, parent, property, merge, key) {
298
340
  const previous = parent[property];
299
341
  if (target === previous) return;
300
- if (property !== $ROOT && (!isWrappable(target) || !isWrappable(previous) || key && target[key] !== previous[key])) {
342
+ if (
343
+ property !== $ROOT &&
344
+ (!isWrappable(target) || !isWrappable(previous) || (key && target[key] !== previous[key]))
345
+ ) {
301
346
  setProperty(parent, property, target);
302
347
  return;
303
348
  }
304
349
  if (Array.isArray(target)) {
305
- if (target.length && previous.length && (!merge || key && target[0] && target[0][key] != null)) {
350
+ if (
351
+ target.length &&
352
+ previous.length &&
353
+ (!merge || (key && target[0] && target[0][key] != null))
354
+ ) {
306
355
  let i, j, start, end, newEnd, item, newIndicesNext, keyVal;
307
- 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++) {
356
+ for (
357
+ start = 0, end = Math.min(previous.length, target.length);
358
+ start < end &&
359
+ (previous[start] === target[start] ||
360
+ (key && previous[start] && target[start] && previous[start][key] === target[start][key]));
361
+ start++
362
+ ) {
308
363
  applyState(target[start], previous, start, merge, key);
309
364
  }
310
365
  const temp = new Array(target.length),
311
366
  newIndices = new Map();
312
- 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--) {
367
+ for (
368
+ end = previous.length - 1, newEnd = target.length - 1;
369
+ end >= start &&
370
+ newEnd >= start &&
371
+ (previous[end] === target[newEnd] ||
372
+ (key && previous[start] && target[start] && previous[end][key] === target[newEnd][key]));
373
+ end--, newEnd--
374
+ ) {
313
375
  temp[newEnd] = previous[end];
314
376
  }
315
377
  if (start > newEnd || start > end) {
@@ -363,16 +425,19 @@ function applyState(target, parent, property, merge, key) {
363
425
  }
364
426
  }
365
427
  function reconcile(value, options = {}) {
366
- const {
367
- merge,
368
- key = "id"
369
- } = options,
428
+ const { merge, key = "id" } = options,
370
429
  v = unwrap(value);
371
430
  return state => {
372
431
  if (!isWrappable(state) || !isWrappable(v)) return v;
373
- const res = applyState(v, {
374
- [$ROOT]: state
375
- }, $ROOT, merge, key);
432
+ const res = applyState(
433
+ v,
434
+ {
435
+ [$ROOT]: state
436
+ },
437
+ $ROOT,
438
+ merge,
439
+ key
440
+ );
376
441
  return res === undefined ? state : res;
377
442
  };
378
443
  }
@@ -382,7 +447,10 @@ const setterTraps = {
382
447
  if (property === $RAW) return target;
383
448
  const value = target[property];
384
449
  let proxy;
385
- return isWrappable(value) ? producers.get(value) || (producers.set(value, proxy = new Proxy(value, setterTraps)), proxy) : value;
450
+ return isWrappable(value)
451
+ ? producers.get(value) ||
452
+ (producers.set(value, (proxy = new Proxy(value, setterTraps))), proxy)
453
+ : value;
386
454
  },
387
455
  set(target, property, value) {
388
456
  setProperty(target, property, unwrap(value));
@@ -398,7 +466,7 @@ function produce(fn) {
398
466
  if (isWrappable(state)) {
399
467
  let proxy;
400
468
  if (!(proxy = producers.get(state))) {
401
- producers.set(state, proxy = new Proxy(state, setterTraps));
469
+ producers.set(state, (proxy = new Proxy(state, setterTraps)));
402
470
  }
403
471
  fn(proxy);
404
472
  }
@@ -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 {};