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