solid-js 1.7.8 → 1.7.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 (54) hide show
  1. package/dist/dev.cjs +35 -19
  2. package/dist/dev.js +558 -309
  3. package/dist/server.cjs +38 -23
  4. package/dist/server.js +202 -94
  5. package/dist/solid.cjs +35 -19
  6. package/dist/solid.js +485 -267
  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 +3 -0
  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 +36 -33
  20. package/store/dist/dev.js +143 -68
  21. package/store/dist/server.js +19 -8
  22. package/store/dist/store.cjs +36 -33
  23. package/store/dist/store.js +134 -65
  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 +220 -63
  29. package/types/index.d.ts +72 -9
  30. package/types/jsx.d.ts +3 -0
  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 +237 -146
  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 +12 -12
  39. package/types/server/index.d.ts +56 -2
  40. package/types/server/reactive.d.ts +71 -45
  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 +5 -1
  48. package/web/dist/server.js +181 -78
  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
  54. package/web/types/server.d.ts +1 -1
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": "1.7.8",
4
+ "version": "1.7.10",
5
5
  "author": "Ryan Carniato",
6
6
  "license": "MIT",
7
7
  "homepage": "https://solidjs.com",
@@ -3,7 +3,9 @@
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"),
8
+ $SELF = Symbol("store-self");
7
9
  const DevHooks = {
8
10
  onStoreNodeUpdate: null
9
11
  };
@@ -56,15 +58,21 @@ function unwrap(item, set = new Set()) {
56
58
  }
57
59
  return item;
58
60
  }
59
- function getDataNodes(target) {
60
- let nodes = target[$NODE];
61
- if (!nodes) Object.defineProperty(target, $NODE, {
61
+ function getNodes(target, symbol) {
62
+ let nodes = target[symbol];
63
+ if (!nodes) Object.defineProperty(target, symbol, {
62
64
  value: nodes = Object.create(null)
63
65
  });
64
66
  return nodes;
65
67
  }
66
- function getDataNode(nodes, property, value) {
67
- return nodes[property] || (nodes[property] = createDataNode(value));
68
+ function getNode(nodes, property, value) {
69
+ if (nodes[property]) return nodes[property];
70
+ const [s, set] = solidJs.createSignal(value, {
71
+ equals: false,
72
+ internal: true
73
+ });
74
+ s.$ = set;
75
+ return nodes[property] = s;
68
76
  }
69
77
  function proxyDescriptor$1(target, property) {
70
78
  const desc = Reflect.getOwnPropertyDescriptor(target, property);
@@ -75,23 +83,12 @@ function proxyDescriptor$1(target, property) {
75
83
  return desc;
76
84
  }
77
85
  function trackSelf(target) {
78
- if (solidJs.getListener()) {
79
- const nodes = getDataNodes(target);
80
- (nodes._ || (nodes._ = createDataNode()))();
81
- }
86
+ solidJs.getListener() && getNode(getNodes(target, $NODE), $SELF)();
82
87
  }
83
88
  function ownKeys(target) {
84
89
  trackSelf(target);
85
90
  return Reflect.ownKeys(target);
86
91
  }
87
- function createDataNode(value) {
88
- const [s, set] = solidJs.createSignal(value, {
89
- equals: false,
90
- internal: true
91
- });
92
- s.$ = set;
93
- return s;
94
- }
95
92
  const proxyTraps$1 = {
96
93
  get(target, property, receiver) {
97
94
  if (property === $RAW) return target;
@@ -100,19 +97,19 @@ const proxyTraps$1 = {
100
97
  trackSelf(target);
101
98
  return receiver;
102
99
  }
103
- const nodes = getDataNodes(target);
100
+ const nodes = getNodes(target, $NODE);
104
101
  const tracked = nodes[property];
105
102
  let value = tracked ? tracked() : target[property];
106
- if (property === $NODE || property === "__proto__") return value;
103
+ if (property === $NODE || property === $HAS || property === "__proto__") return value;
107
104
  if (!tracked) {
108
105
  const desc = Object.getOwnPropertyDescriptor(target, property);
109
- if (solidJs.getListener() && (typeof value !== "function" || target.hasOwnProperty(property)) && !(desc && desc.get)) value = getDataNode(nodes, property, value)();
106
+ if (solidJs.getListener() && (typeof value !== "function" || target.hasOwnProperty(property)) && !(desc && desc.get)) value = getNode(nodes, property, value)();
110
107
  }
111
108
  return isWrappable(value) ? wrap$1(value) : value;
112
109
  },
113
110
  has(target, property) {
114
- if (property === $RAW || property === solidJs.$PROXY || property === solidJs.$TRACK || property === $NODE || property === "__proto__") return true;
115
- this.get(target, property, target);
111
+ if (property === $RAW || property === solidJs.$PROXY || property === solidJs.$TRACK || property === $NODE || property === $HAS || property === "__proto__") return true;
112
+ solidJs.getListener() && getNode(getNodes(target, $HAS), property)();
116
113
  return property in target;
117
114
  },
118
115
  set() {
@@ -131,15 +128,21 @@ function setProperty(state, property, value, deleting = false) {
131
128
  const prev = state[property],
132
129
  len = state.length;
133
130
  DevHooks.onStoreNodeUpdate && DevHooks.onStoreNodeUpdate(state, property, value, prev);
134
- if (value === undefined) delete state[property];else state[property] = value;
135
- let nodes = getDataNodes(state),
131
+ if (value === undefined) {
132
+ delete state[property];
133
+ if (state[$HAS] && state[$HAS][property] && prev !== undefined) state[$HAS][property].$();
134
+ } else {
135
+ state[property] = value;
136
+ if (state[$HAS] && state[$HAS][property] && prev === undefined) state[$HAS][property].$();
137
+ }
138
+ let nodes = getNodes(state, $NODE),
136
139
  node;
137
- if (node = getDataNode(nodes, property, prev)) node.$(() => value);
140
+ if (node = getNode(nodes, property, prev)) node.$(() => value);
138
141
  if (Array.isArray(state) && state.length !== len) {
139
142
  for (let i = state.length; i < len; i++) (node = nodes[i]) && node.$();
140
- (node = getDataNode(nodes, "length", len)) && node.$(state.length);
143
+ (node = getNode(nodes, "length", len)) && node.$(state.length);
141
144
  }
142
- (node = nodes._) && node.$();
145
+ (node = nodes[$SELF]) && node.$();
143
146
  }
144
147
  function mergeStoreNode(state, value) {
145
148
  const keys = Object.keys(value);
@@ -241,22 +244,22 @@ const proxyTraps = {
241
244
  trackSelf(target);
242
245
  return receiver;
243
246
  }
244
- const nodes = getDataNodes(target);
247
+ const nodes = getNodes(target, $NODE);
245
248
  const tracked = nodes[property];
246
249
  let value = tracked ? tracked() : target[property];
247
- if (property === $NODE || property === "__proto__") return value;
250
+ if (property === $NODE || property === $HAS || property === "__proto__") return value;
248
251
  if (!tracked) {
249
252
  const desc = Object.getOwnPropertyDescriptor(target, property);
250
253
  const isFunction = typeof value === "function";
251
- if (solidJs.getListener() && (!isFunction || target.hasOwnProperty(property)) && !(desc && desc.get)) value = getDataNode(nodes, property, value)();else if (value != null && isFunction && value === Array.prototype[property]) {
254
+ if (solidJs.getListener() && (!isFunction || target.hasOwnProperty(property)) && !(desc && desc.get)) value = getNode(nodes, property, value)();else if (value != null && isFunction && value === Array.prototype[property]) {
252
255
  return (...args) => solidJs.batch(() => Array.prototype[property].apply(receiver, args));
253
256
  }
254
257
  }
255
258
  return isWrappable(value) ? wrap(value) : value;
256
259
  },
257
260
  has(target, property) {
258
- if (property === $RAW || property === solidJs.$PROXY || property === solidJs.$TRACK || property === $NODE || property === "__proto__") return true;
259
- this.get(target, property, target);
261
+ if (property === $RAW || property === solidJs.$PROXY || property === solidJs.$TRACK || property === $NODE || property === $HAS || property === "__proto__") return true;
262
+ solidJs.getListener() && getNode(getNodes(target, $HAS), property)();
260
263
  return property in target;
261
264
  },
262
265
  set(target, property, value) {
package/store/dist/dev.js CHANGED
@@ -1,7 +1,9 @@
1
- import { DEV as DEV$1, $PROXY, $TRACK, getListener, batch, createSignal } from 'solid-js';
1
+ import { DEV as DEV$1, $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"),
6
+ $SELF = Symbol("store-self");
5
7
  const DevHooks = {
6
8
  onStoreNodeUpdate: null
7
9
  };
@@ -9,7 +11,7 @@ function wrap$1(value) {
9
11
  let p = value[$PROXY];
10
12
  if (!p) {
11
13
  Object.defineProperty(value, $PROXY, {
12
- value: p = new Proxy(value, proxyTraps$1)
14
+ value: (p = new Proxy(value, proxyTraps$1))
13
15
  });
14
16
  if (!Array.isArray(value)) {
15
17
  const keys = Object.keys(value),
@@ -29,20 +31,29 @@ function wrap$1(value) {
29
31
  }
30
32
  function isWrappable(obj) {
31
33
  let proto;
32
- return obj != null && typeof obj === "object" && (obj[$PROXY] || !(proto = Object.getPrototypeOf(obj)) || proto === Object.prototype || Array.isArray(obj));
34
+ return (
35
+ obj != null &&
36
+ typeof obj === "object" &&
37
+ (obj[$PROXY] ||
38
+ !(proto = Object.getPrototypeOf(obj)) ||
39
+ proto === Object.prototype ||
40
+ Array.isArray(obj))
41
+ );
33
42
  }
34
43
  function unwrap(item, set = new Set()) {
35
44
  let result, unwrapped, v, prop;
36
- if (result = item != null && item[$RAW]) return result;
45
+ if ((result = item != null && item[$RAW])) return result;
37
46
  if (!isWrappable(item) || set.has(item)) return item;
38
47
  if (Array.isArray(item)) {
39
- if (Object.isFrozen(item)) item = item.slice(0);else set.add(item);
48
+ if (Object.isFrozen(item)) item = item.slice(0);
49
+ else set.add(item);
40
50
  for (let i = 0, l = item.length; i < l; i++) {
41
51
  v = item[i];
42
52
  if ((unwrapped = unwrap(v, set)) !== v) item[i] = unwrapped;
43
53
  }
44
54
  } else {
45
- if (Object.isFrozen(item)) item = Object.assign({}, item);else set.add(item);
55
+ if (Object.isFrozen(item)) item = Object.assign({}, item);
56
+ else set.add(item);
46
57
  const keys = Object.keys(item),
47
58
  desc = Object.getOwnPropertyDescriptors(item);
48
59
  for (let i = 0, l = keys.length; i < l; i++) {
@@ -54,42 +65,39 @@ function unwrap(item, set = new Set()) {
54
65
  }
55
66
  return item;
56
67
  }
57
- function getDataNodes(target) {
58
- let nodes = target[$NODE];
59
- if (!nodes) Object.defineProperty(target, $NODE, {
60
- value: nodes = Object.create(null)
61
- });
68
+ function getNodes(target, symbol) {
69
+ let nodes = target[symbol];
70
+ if (!nodes)
71
+ Object.defineProperty(target, symbol, {
72
+ value: (nodes = Object.create(null))
73
+ });
62
74
  return nodes;
63
75
  }
64
- function getDataNode(nodes, property, value) {
65
- return nodes[property] || (nodes[property] = createDataNode(value));
76
+ function getNode(nodes, property, value) {
77
+ if (nodes[property]) return nodes[property];
78
+ const [s, set] = createSignal(value, {
79
+ equals: false,
80
+ internal: true
81
+ });
82
+ s.$ = set;
83
+ return (nodes[property] = s);
66
84
  }
67
85
  function proxyDescriptor$1(target, property) {
68
86
  const desc = Reflect.getOwnPropertyDescriptor(target, property);
69
- if (!desc || desc.get || !desc.configurable || property === $PROXY || property === $NODE) return desc;
87
+ if (!desc || desc.get || !desc.configurable || property === $PROXY || property === $NODE)
88
+ return desc;
70
89
  delete desc.value;
71
90
  delete desc.writable;
72
91
  desc.get = () => target[$PROXY][property];
73
92
  return desc;
74
93
  }
75
94
  function trackSelf(target) {
76
- if (getListener()) {
77
- const nodes = getDataNodes(target);
78
- (nodes._ || (nodes._ = createDataNode()))();
79
- }
95
+ getListener() && getNode(getNodes(target, $NODE), $SELF)();
80
96
  }
81
97
  function ownKeys(target) {
82
98
  trackSelf(target);
83
99
  return Reflect.ownKeys(target);
84
100
  }
85
- function createDataNode(value) {
86
- const [s, set] = createSignal(value, {
87
- equals: false,
88
- internal: true
89
- });
90
- s.$ = set;
91
- return s;
92
- }
93
101
  const proxyTraps$1 = {
94
102
  get(target, property, receiver) {
95
103
  if (property === $RAW) return target;
@@ -98,19 +106,32 @@ const proxyTraps$1 = {
98
106
  trackSelf(target);
99
107
  return receiver;
100
108
  }
101
- const nodes = getDataNodes(target);
109
+ const nodes = getNodes(target, $NODE);
102
110
  const tracked = nodes[property];
103
111
  let value = tracked ? tracked() : target[property];
104
- if (property === $NODE || property === "__proto__") return value;
112
+ if (property === $NODE || property === $HAS || property === "__proto__") return value;
105
113
  if (!tracked) {
106
114
  const desc = Object.getOwnPropertyDescriptor(target, property);
107
- if (getListener() && (typeof value !== "function" || target.hasOwnProperty(property)) && !(desc && desc.get)) value = getDataNode(nodes, property, value)();
115
+ if (
116
+ getListener() &&
117
+ (typeof value !== "function" || target.hasOwnProperty(property)) &&
118
+ !(desc && desc.get)
119
+ )
120
+ value = getNode(nodes, property, value)();
108
121
  }
109
122
  return isWrappable(value) ? wrap$1(value) : value;
110
123
  },
111
124
  has(target, property) {
112
- if (property === $RAW || property === $PROXY || property === $TRACK || property === $NODE || property === "__proto__") return true;
113
- this.get(target, property, target);
125
+ if (
126
+ property === $RAW ||
127
+ property === $PROXY ||
128
+ property === $TRACK ||
129
+ property === $NODE ||
130
+ property === $HAS ||
131
+ property === "__proto__"
132
+ )
133
+ return true;
134
+ getListener() && getNode(getNodes(target, $HAS), property)();
114
135
  return property in target;
115
136
  },
116
137
  set() {
@@ -129,15 +150,21 @@ function setProperty(state, property, value, deleting = false) {
129
150
  const prev = state[property],
130
151
  len = state.length;
131
152
  DevHooks.onStoreNodeUpdate && DevHooks.onStoreNodeUpdate(state, property, value, prev);
132
- if (value === undefined) delete state[property];else state[property] = value;
133
- let nodes = getDataNodes(state),
153
+ if (value === undefined) {
154
+ delete state[property];
155
+ if (state[$HAS] && state[$HAS][property] && prev !== undefined) state[$HAS][property].$();
156
+ } else {
157
+ state[property] = value;
158
+ if (state[$HAS] && state[$HAS][property] && prev === undefined) state[$HAS][property].$();
159
+ }
160
+ let nodes = getNodes(state, $NODE),
134
161
  node;
135
- if (node = getDataNode(nodes, property, prev)) node.$(() => value);
162
+ if ((node = getNode(nodes, property, prev))) node.$(() => value);
136
163
  if (Array.isArray(state) && state.length !== len) {
137
164
  for (let i = state.length; i < len; i++) (node = nodes[i]) && node.$();
138
- (node = getDataNode(nodes, "length", len)) && node.$(state.length);
165
+ (node = getNode(nodes, "length", len)) && node.$(state.length);
139
166
  }
140
- (node = nodes._) && node.$();
167
+ (node = nodes[$SELF]) && node.$();
141
168
  }
142
169
  function mergeStoreNode(state, value) {
143
170
  const keys = Object.keys(value);
@@ -178,11 +205,7 @@ function updatePath(current, path, traversed = []) {
178
205
  }
179
206
  return;
180
207
  } else if (isArray && partType === "object") {
181
- const {
182
- from = 0,
183
- to = current.length - 1,
184
- by = 1
185
- } = part;
208
+ const { from = 0, to = current.length - 1, by = 1 } = part;
186
209
  for (let i = from; i <= to; i += by) {
187
210
  updatePath(current, [i].concat(path), traversed);
188
211
  }
@@ -201,14 +224,17 @@ function updatePath(current, path, traversed = []) {
201
224
  }
202
225
  if (part === undefined && value == undefined) return;
203
226
  value = unwrap(value);
204
- if (part === undefined || isWrappable(prev) && isWrappable(value) && !Array.isArray(value)) {
227
+ if (part === undefined || (isWrappable(prev) && isWrappable(value) && !Array.isArray(value))) {
205
228
  mergeStoreNode(prev, value);
206
229
  } else setProperty(current, part, value);
207
230
  }
208
231
  function createStore(...[store, options]) {
209
232
  const unwrappedStore = unwrap(store || {});
210
233
  const isArray = Array.isArray(unwrappedStore);
211
- if (typeof unwrappedStore !== "object" && typeof unwrappedStore !== "function") throw new Error(`Unexpected type ${typeof unwrappedStore} received when initializing 'createStore'. Expected an object.`);
234
+ if (typeof unwrappedStore !== "object" && typeof unwrappedStore !== "function")
235
+ throw new Error(
236
+ `Unexpected type ${typeof unwrappedStore} received when initializing 'createStore'. Expected an object.`
237
+ );
212
238
  const wrappedStore = wrap$1(unwrappedStore);
213
239
  DEV$1.registerGraph({
214
240
  value: unwrappedStore,
@@ -216,7 +242,9 @@ function createStore(...[store, options]) {
216
242
  });
217
243
  function setStore(...args) {
218
244
  batch(() => {
219
- isArray && args.length === 1 ? updateArray(unwrappedStore, args[0]) : updatePath(unwrappedStore, args);
245
+ isArray && args.length === 1
246
+ ? updateArray(unwrappedStore, args[0])
247
+ : updatePath(unwrappedStore, args);
220
248
  });
221
249
  }
222
250
  return [wrappedStore, setStore];
@@ -224,11 +252,19 @@ function createStore(...[store, options]) {
224
252
 
225
253
  function proxyDescriptor(target, property) {
226
254
  const desc = Reflect.getOwnPropertyDescriptor(target, property);
227
- if (!desc || desc.get || desc.set || !desc.configurable || property === $PROXY || property === $NODE) return desc;
255
+ if (
256
+ !desc ||
257
+ desc.get ||
258
+ desc.set ||
259
+ !desc.configurable ||
260
+ property === $PROXY ||
261
+ property === $NODE
262
+ )
263
+ return desc;
228
264
  delete desc.value;
229
265
  delete desc.writable;
230
266
  desc.get = () => target[$PROXY][property];
231
- desc.set = v => target[$PROXY][property] = v;
267
+ desc.set = v => (target[$PROXY][property] = v);
232
268
  return desc;
233
269
  }
234
270
  const proxyTraps = {
@@ -239,22 +275,32 @@ const proxyTraps = {
239
275
  trackSelf(target);
240
276
  return receiver;
241
277
  }
242
- const nodes = getDataNodes(target);
278
+ const nodes = getNodes(target, $NODE);
243
279
  const tracked = nodes[property];
244
280
  let value = tracked ? tracked() : target[property];
245
- if (property === $NODE || property === "__proto__") return value;
281
+ if (property === $NODE || property === $HAS || property === "__proto__") return value;
246
282
  if (!tracked) {
247
283
  const desc = Object.getOwnPropertyDescriptor(target, property);
248
284
  const isFunction = typeof value === "function";
249
- if (getListener() && (!isFunction || target.hasOwnProperty(property)) && !(desc && desc.get)) value = getDataNode(nodes, property, value)();else if (value != null && isFunction && value === Array.prototype[property]) {
285
+ if (getListener() && (!isFunction || target.hasOwnProperty(property)) && !(desc && desc.get))
286
+ value = getNode(nodes, property, value)();
287
+ else if (value != null && isFunction && value === Array.prototype[property]) {
250
288
  return (...args) => batch(() => Array.prototype[property].apply(receiver, args));
251
289
  }
252
290
  }
253
291
  return isWrappable(value) ? wrap(value) : value;
254
292
  },
255
293
  has(target, property) {
256
- if (property === $RAW || property === $PROXY || property === $TRACK || property === $NODE || property === "__proto__") return true;
257
- this.get(target, property, target);
294
+ if (
295
+ property === $RAW ||
296
+ property === $PROXY ||
297
+ property === $TRACK ||
298
+ property === $NODE ||
299
+ property === $HAS ||
300
+ property === "__proto__"
301
+ )
302
+ return true;
303
+ getListener() && getNode(getNodes(target, $HAS), property)();
258
304
  return property in target;
259
305
  },
260
306
  set(target, property, value) {
@@ -272,7 +318,7 @@ function wrap(value) {
272
318
  let p = value[$PROXY];
273
319
  if (!p) {
274
320
  Object.defineProperty(value, $PROXY, {
275
- value: p = new Proxy(value, proxyTraps)
321
+ value: (p = new Proxy(value, proxyTraps))
276
322
  });
277
323
  const keys = Object.keys(value),
278
324
  desc = Object.getOwnPropertyDescriptors(value);
@@ -297,7 +343,10 @@ function wrap(value) {
297
343
  }
298
344
  function createMutable(state, options) {
299
345
  const unwrappedStore = unwrap(state || {});
300
- if (typeof unwrappedStore !== "object" && typeof unwrappedStore !== "function") throw new Error(`Unexpected type ${typeof unwrappedStore} received when initializing 'createMutable'. Expected an object.`);
346
+ if (typeof unwrappedStore !== "object" && typeof unwrappedStore !== "function")
347
+ throw new Error(
348
+ `Unexpected type ${typeof unwrappedStore} received when initializing 'createMutable'. Expected an object.`
349
+ );
301
350
  const wrappedStore = wrap(unwrappedStore);
302
351
  DEV$1.registerGraph({
303
352
  value: unwrappedStore,
@@ -313,19 +362,39 @@ const $ROOT = Symbol("store-root");
313
362
  function applyState(target, parent, property, merge, key) {
314
363
  const previous = parent[property];
315
364
  if (target === previous) return;
316
- if (property !== $ROOT && (!isWrappable(target) || !isWrappable(previous) || key && target[key] !== previous[key])) {
365
+ if (
366
+ property !== $ROOT &&
367
+ (!isWrappable(target) || !isWrappable(previous) || (key && target[key] !== previous[key]))
368
+ ) {
317
369
  setProperty(parent, property, target);
318
370
  return;
319
371
  }
320
372
  if (Array.isArray(target)) {
321
- if (target.length && previous.length && (!merge || key && target[0] && target[0][key] != null)) {
373
+ if (
374
+ target.length &&
375
+ previous.length &&
376
+ (!merge || (key && target[0] && target[0][key] != null))
377
+ ) {
322
378
  let i, j, start, end, newEnd, item, newIndicesNext, keyVal;
323
- 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++) {
379
+ for (
380
+ start = 0, end = Math.min(previous.length, target.length);
381
+ start < end &&
382
+ (previous[start] === target[start] ||
383
+ (key && previous[start] && target[start] && previous[start][key] === target[start][key]));
384
+ start++
385
+ ) {
324
386
  applyState(target[start], previous, start, merge, key);
325
387
  }
326
388
  const temp = new Array(target.length),
327
389
  newIndices = new Map();
328
- 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--) {
390
+ for (
391
+ end = previous.length - 1, newEnd = target.length - 1;
392
+ end >= start &&
393
+ newEnd >= start &&
394
+ (previous[end] === target[newEnd] ||
395
+ (key && previous[start] && target[start] && previous[end][key] === target[newEnd][key]));
396
+ end--, newEnd--
397
+ ) {
329
398
  temp[newEnd] = previous[end];
330
399
  }
331
400
  if (start > newEnd || start > end) {
@@ -379,16 +448,19 @@ function applyState(target, parent, property, merge, key) {
379
448
  }
380
449
  }
381
450
  function reconcile(value, options = {}) {
382
- const {
383
- merge,
384
- key = "id"
385
- } = options,
451
+ const { merge, key = "id" } = options,
386
452
  v = unwrap(value);
387
453
  return state => {
388
454
  if (!isWrappable(state) || !isWrappable(v)) return v;
389
- const res = applyState(v, {
390
- [$ROOT]: state
391
- }, $ROOT, merge, key);
455
+ const res = applyState(
456
+ v,
457
+ {
458
+ [$ROOT]: state
459
+ },
460
+ $ROOT,
461
+ merge,
462
+ key
463
+ );
392
464
  return res === undefined ? state : res;
393
465
  };
394
466
  }
@@ -398,7 +470,10 @@ const setterTraps = {
398
470
  if (property === $RAW) return target;
399
471
  const value = target[property];
400
472
  let proxy;
401
- return isWrappable(value) ? producers.get(value) || (producers.set(value, proxy = new Proxy(value, setterTraps)), proxy) : value;
473
+ return isWrappable(value)
474
+ ? producers.get(value) ||
475
+ (producers.set(value, (proxy = new Proxy(value, setterTraps))), proxy)
476
+ : value;
402
477
  },
403
478
  set(target, property, value) {
404
479
  setProperty(target, property, unwrap(value));
@@ -414,7 +489,7 @@ function produce(fn) {
414
489
  if (isWrappable(state)) {
415
490
  let proxy;
416
491
  if (!(proxy = producers.get(state))) {
417
- producers.set(state, proxy = new Proxy(state, setterTraps));
492
+ producers.set(state, (proxy = new Proxy(state, setterTraps)));
418
493
  }
419
494
  fn(proxy);
420
495
  }
@@ -426,6 +501,6 @@ const DEV = {
426
501
  $NODE,
427
502
  isWrappable,
428
503
  hooks: DevHooks
429
- } ;
504
+ };
430
505
 
431
506
  export { $RAW, DEV, createMutable, createStore, modifyMutable, produce, reconcile, unwrap };
@@ -1,6 +1,10 @@
1
1
  const $RAW = Symbol("state-raw");
2
2
  function isWrappable(obj) {
3
- return obj != null && typeof obj === "object" && (Object.getPrototypeOf(obj) === Object.prototype || Array.isArray(obj));
3
+ return (
4
+ obj != null &&
5
+ typeof obj === "object" &&
6
+ (Object.getPrototypeOf(obj) === Object.prototype || Array.isArray(obj))
7
+ );
4
8
  }
5
9
  function unwrap(item) {
6
10
  return item;
@@ -49,11 +53,7 @@ function updatePath(current, path, traversed = []) {
49
53
  }
50
54
  return;
51
55
  } else if (isArray && partType === "object") {
52
- const {
53
- from = 0,
54
- to = current.length - 1,
55
- by = 1
56
- } = part;
56
+ const { from = 0, to = current.length - 1, by = 1 } = part;
57
57
  for (let i = from; i <= to; i += by) {
58
58
  updatePath(current, [i].concat(path), traversed);
59
59
  }
@@ -71,7 +71,7 @@ function updatePath(current, path, traversed = []) {
71
71
  if (value === next) return;
72
72
  }
73
73
  if (part === undefined && value == undefined) return;
74
- if (part === undefined || isWrappable(next) && isWrappable(value) && !Array.isArray(value)) {
74
+ if (part === undefined || (isWrappable(next) && isWrappable(value) && !Array.isArray(value))) {
75
75
  mergeStoreNode(next, value);
76
76
  } else setProperty(current, part, value);
77
77
  }
@@ -108,4 +108,15 @@ function produce(fn) {
108
108
  }
109
109
  const DEV = undefined;
110
110
 
111
- export { $RAW, DEV, createMutable, createStore, isWrappable, produce, reconcile, setProperty, unwrap, updatePath };
111
+ export {
112
+ $RAW,
113
+ DEV,
114
+ createMutable,
115
+ createStore,
116
+ isWrappable,
117
+ produce,
118
+ reconcile,
119
+ setProperty,
120
+ unwrap,
121
+ updatePath
122
+ };