solid-js 1.8.7 → 1.8.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dev.cjs +30 -20
- package/dist/dev.js +327 -552
- package/dist/server.js +75 -170
- package/dist/solid.cjs +30 -20
- package/dist/solid.js +285 -479
- package/h/dist/h.js +8 -34
- package/h/jsx-runtime/dist/jsx.js +1 -1
- package/h/jsx-runtime/types/index.d.ts +8 -11
- package/h/jsx-runtime/types/jsx.d.ts +15 -1
- package/h/types/hyperscript.d.ts +11 -11
- package/html/dist/html.js +94 -216
- package/html/types/lit.d.ts +33 -47
- package/package.json +2 -2
- package/store/dist/dev.cjs +3 -2
- package/store/dist/dev.js +44 -115
- package/store/dist/server.js +8 -19
- package/store/dist/store.cjs +3 -2
- package/store/dist/store.js +41 -106
- package/store/types/index.d.ts +7 -21
- package/store/types/modifiers.d.ts +3 -6
- package/store/types/mutable.d.ts +2 -5
- package/store/types/server.d.ts +4 -12
- package/store/types/store.d.ts +61 -218
- package/types/index.d.ts +10 -75
- package/types/jsx.d.ts +15 -1
- package/types/reactive/array.d.ts +4 -12
- package/types/reactive/observable.d.ts +17 -25
- package/types/reactive/scheduler.d.ts +6 -9
- package/types/reactive/signal.d.ts +142 -231
- package/types/render/Suspense.d.ts +5 -5
- package/types/render/component.d.ts +33 -62
- package/types/render/flow.d.ts +31 -43
- package/types/render/hydration.d.ts +13 -13
- package/types/server/index.d.ts +2 -57
- package/types/server/reactive.d.ts +42 -73
- package/types/server/rendering.d.ts +96 -167
- package/universal/dist/dev.js +12 -28
- package/universal/dist/universal.js +12 -28
- package/universal/types/index.d.ts +1 -3
- package/universal/types/universal.d.ts +1 -0
- package/web/dist/dev.js +81 -620
- package/web/dist/server.cjs +7 -2
- package/web/dist/server.js +102 -179
- package/web/dist/storage.js +3 -3
- package/web/dist/web.js +80 -614
- package/web/types/client.d.ts +2 -2
- package/web/types/core.d.ts +1 -10
- package/web/types/index.d.ts +10 -27
- package/web/types/server-mock.d.ts +32 -47
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.8.
|
|
4
|
+
"version": "1.8.8",
|
|
5
5
|
"author": "Ryan Carniato",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"homepage": "https://solidjs.com",
|
|
@@ -215,7 +215,7 @@
|
|
|
215
215
|
],
|
|
216
216
|
"dependencies": {
|
|
217
217
|
"csstype": "^3.1.0",
|
|
218
|
-
"seroval": "^0.
|
|
218
|
+
"seroval": "^1.0.2"
|
|
219
219
|
},
|
|
220
220
|
"scripts": {
|
|
221
221
|
"build": "npm-run-all -nl build:*",
|
package/store/dist/dev.cjs
CHANGED
|
@@ -318,11 +318,12 @@ const $ROOT = Symbol("store-root");
|
|
|
318
318
|
function applyState(target, parent, property, merge, key) {
|
|
319
319
|
const previous = parent[property];
|
|
320
320
|
if (target === previous) return;
|
|
321
|
-
|
|
321
|
+
const isArray = Array.isArray(target);
|
|
322
|
+
if (property !== $ROOT && (!isWrappable(target) || !isWrappable(previous) || isArray && !Array.isArray(previous) || key && target[key] !== previous[key])) {
|
|
322
323
|
setProperty(parent, property, target);
|
|
323
324
|
return;
|
|
324
325
|
}
|
|
325
|
-
if (
|
|
326
|
+
if (isArray) {
|
|
326
327
|
if (target.length && previous.length && (!merge || key && target[0] && target[0][key] != null)) {
|
|
327
328
|
let i, j, start, end, newEnd, item, newIndicesNext, keyVal;
|
|
328
329
|
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++) {
|
package/store/dist/dev.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DEV as DEV$1, $PROXY, $TRACK, getListener, batch, createSignal } from
|
|
1
|
+
import { DEV as DEV$1, $PROXY, $TRACK, getListener, batch, createSignal } from 'solid-js';
|
|
2
2
|
|
|
3
3
|
const $RAW = Symbol("store-raw"),
|
|
4
4
|
$NODE = Symbol("store-node"),
|
|
@@ -11,7 +11,7 @@ function wrap$1(value) {
|
|
|
11
11
|
let p = value[$PROXY];
|
|
12
12
|
if (!p) {
|
|
13
13
|
Object.defineProperty(value, $PROXY, {
|
|
14
|
-
value:
|
|
14
|
+
value: p = new Proxy(value, proxyTraps$1)
|
|
15
15
|
});
|
|
16
16
|
if (!Array.isArray(value)) {
|
|
17
17
|
const keys = Object.keys(value),
|
|
@@ -31,29 +31,20 @@ function wrap$1(value) {
|
|
|
31
31
|
}
|
|
32
32
|
function isWrappable(obj) {
|
|
33
33
|
let proto;
|
|
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
|
-
);
|
|
34
|
+
return obj != null && typeof obj === "object" && (obj[$PROXY] || !(proto = Object.getPrototypeOf(obj)) || proto === Object.prototype || Array.isArray(obj));
|
|
42
35
|
}
|
|
43
36
|
function unwrap(item, set = new Set()) {
|
|
44
37
|
let result, unwrapped, v, prop;
|
|
45
|
-
if (
|
|
38
|
+
if (result = item != null && item[$RAW]) return result;
|
|
46
39
|
if (!isWrappable(item) || set.has(item)) return item;
|
|
47
40
|
if (Array.isArray(item)) {
|
|
48
|
-
if (Object.isFrozen(item)) item = item.slice(0);
|
|
49
|
-
else set.add(item);
|
|
41
|
+
if (Object.isFrozen(item)) item = item.slice(0);else set.add(item);
|
|
50
42
|
for (let i = 0, l = item.length; i < l; i++) {
|
|
51
43
|
v = item[i];
|
|
52
44
|
if ((unwrapped = unwrap(v, set)) !== v) item[i] = unwrapped;
|
|
53
45
|
}
|
|
54
46
|
} else {
|
|
55
|
-
if (Object.isFrozen(item)) item = Object.assign({}, item);
|
|
56
|
-
else set.add(item);
|
|
47
|
+
if (Object.isFrozen(item)) item = Object.assign({}, item);else set.add(item);
|
|
57
48
|
const keys = Object.keys(item),
|
|
58
49
|
desc = Object.getOwnPropertyDescriptors(item);
|
|
59
50
|
for (let i = 0, l = keys.length; i < l; i++) {
|
|
@@ -67,10 +58,9 @@ function unwrap(item, set = new Set()) {
|
|
|
67
58
|
}
|
|
68
59
|
function getNodes(target, symbol) {
|
|
69
60
|
let nodes = target[symbol];
|
|
70
|
-
if (!nodes)
|
|
71
|
-
Object.
|
|
72
|
-
|
|
73
|
-
});
|
|
61
|
+
if (!nodes) Object.defineProperty(target, symbol, {
|
|
62
|
+
value: nodes = Object.create(null)
|
|
63
|
+
});
|
|
74
64
|
return nodes;
|
|
75
65
|
}
|
|
76
66
|
function getNode(nodes, property, value) {
|
|
@@ -80,12 +70,11 @@ function getNode(nodes, property, value) {
|
|
|
80
70
|
internal: true
|
|
81
71
|
});
|
|
82
72
|
s.$ = set;
|
|
83
|
-
return
|
|
73
|
+
return nodes[property] = s;
|
|
84
74
|
}
|
|
85
75
|
function proxyDescriptor$1(target, property) {
|
|
86
76
|
const desc = Reflect.getOwnPropertyDescriptor(target, property);
|
|
87
|
-
if (!desc || desc.get || !desc.configurable || property === $PROXY || property === $NODE)
|
|
88
|
-
return desc;
|
|
77
|
+
if (!desc || desc.get || !desc.configurable || property === $PROXY || property === $NODE) return desc;
|
|
89
78
|
delete desc.value;
|
|
90
79
|
delete desc.writable;
|
|
91
80
|
desc.get = () => target[$PROXY][property];
|
|
@@ -112,25 +101,12 @@ const proxyTraps$1 = {
|
|
|
112
101
|
if (property === $NODE || property === $HAS || property === "__proto__") return value;
|
|
113
102
|
if (!tracked) {
|
|
114
103
|
const desc = Object.getOwnPropertyDescriptor(target, property);
|
|
115
|
-
if (
|
|
116
|
-
getListener() &&
|
|
117
|
-
(typeof value !== "function" || target.hasOwnProperty(property)) &&
|
|
118
|
-
!(desc && desc.get)
|
|
119
|
-
)
|
|
120
|
-
value = getNode(nodes, property, value)();
|
|
104
|
+
if (getListener() && (typeof value !== "function" || target.hasOwnProperty(property)) && !(desc && desc.get)) value = getNode(nodes, property, value)();
|
|
121
105
|
}
|
|
122
106
|
return isWrappable(value) ? wrap$1(value) : value;
|
|
123
107
|
},
|
|
124
108
|
has(target, property) {
|
|
125
|
-
if (
|
|
126
|
-
property === $RAW ||
|
|
127
|
-
property === $PROXY ||
|
|
128
|
-
property === $TRACK ||
|
|
129
|
-
property === $NODE ||
|
|
130
|
-
property === $HAS ||
|
|
131
|
-
property === "__proto__"
|
|
132
|
-
)
|
|
133
|
-
return true;
|
|
109
|
+
if (property === $RAW || property === $PROXY || property === $TRACK || property === $NODE || property === $HAS || property === "__proto__") return true;
|
|
134
110
|
getListener() && getNode(getNodes(target, $HAS), property)();
|
|
135
111
|
return property in target;
|
|
136
112
|
},
|
|
@@ -159,7 +135,7 @@ function setProperty(state, property, value, deleting = false) {
|
|
|
159
135
|
}
|
|
160
136
|
let nodes = getNodes(state, $NODE),
|
|
161
137
|
node;
|
|
162
|
-
if (
|
|
138
|
+
if (node = getNode(nodes, property, prev)) node.$(() => value);
|
|
163
139
|
if (Array.isArray(state) && state.length !== len) {
|
|
164
140
|
for (let i = state.length; i < len; i++) (node = nodes[i]) && node.$();
|
|
165
141
|
(node = getNode(nodes, "length", len)) && node.$(state.length);
|
|
@@ -205,7 +181,11 @@ function updatePath(current, path, traversed = []) {
|
|
|
205
181
|
}
|
|
206
182
|
return;
|
|
207
183
|
} else if (isArray && partType === "object") {
|
|
208
|
-
const {
|
|
184
|
+
const {
|
|
185
|
+
from = 0,
|
|
186
|
+
to = current.length - 1,
|
|
187
|
+
by = 1
|
|
188
|
+
} = part;
|
|
209
189
|
for (let i = from; i <= to; i += by) {
|
|
210
190
|
updatePath(current, [i].concat(path), traversed);
|
|
211
191
|
}
|
|
@@ -224,17 +204,14 @@ function updatePath(current, path, traversed = []) {
|
|
|
224
204
|
}
|
|
225
205
|
if (part === undefined && value == undefined) return;
|
|
226
206
|
value = unwrap(value);
|
|
227
|
-
if (part === undefined ||
|
|
207
|
+
if (part === undefined || isWrappable(prev) && isWrappable(value) && !Array.isArray(value)) {
|
|
228
208
|
mergeStoreNode(prev, value);
|
|
229
209
|
} else setProperty(current, part, value);
|
|
230
210
|
}
|
|
231
211
|
function createStore(...[store, options]) {
|
|
232
212
|
const unwrappedStore = unwrap(store || {});
|
|
233
213
|
const isArray = Array.isArray(unwrappedStore);
|
|
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
|
-
);
|
|
214
|
+
if (typeof unwrappedStore !== "object" && typeof unwrappedStore !== "function") throw new Error(`Unexpected type ${typeof unwrappedStore} received when initializing 'createStore'. Expected an object.`);
|
|
238
215
|
const wrappedStore = wrap$1(unwrappedStore);
|
|
239
216
|
DEV$1.registerGraph({
|
|
240
217
|
value: unwrappedStore,
|
|
@@ -242,9 +219,7 @@ function createStore(...[store, options]) {
|
|
|
242
219
|
});
|
|
243
220
|
function setStore(...args) {
|
|
244
221
|
batch(() => {
|
|
245
|
-
isArray && args.length === 1
|
|
246
|
-
? updateArray(unwrappedStore, args[0])
|
|
247
|
-
: updatePath(unwrappedStore, args);
|
|
222
|
+
isArray && args.length === 1 ? updateArray(unwrappedStore, args[0]) : updatePath(unwrappedStore, args);
|
|
248
223
|
});
|
|
249
224
|
}
|
|
250
225
|
return [wrappedStore, setStore];
|
|
@@ -252,19 +227,11 @@ function createStore(...[store, options]) {
|
|
|
252
227
|
|
|
253
228
|
function proxyDescriptor(target, property) {
|
|
254
229
|
const desc = Reflect.getOwnPropertyDescriptor(target, property);
|
|
255
|
-
if (
|
|
256
|
-
!desc ||
|
|
257
|
-
desc.get ||
|
|
258
|
-
desc.set ||
|
|
259
|
-
!desc.configurable ||
|
|
260
|
-
property === $PROXY ||
|
|
261
|
-
property === $NODE
|
|
262
|
-
)
|
|
263
|
-
return desc;
|
|
230
|
+
if (!desc || desc.get || desc.set || !desc.configurable || property === $PROXY || property === $NODE) return desc;
|
|
264
231
|
delete desc.value;
|
|
265
232
|
delete desc.writable;
|
|
266
233
|
desc.get = () => target[$PROXY][property];
|
|
267
|
-
desc.set = v =>
|
|
234
|
+
desc.set = v => target[$PROXY][property] = v;
|
|
268
235
|
return desc;
|
|
269
236
|
}
|
|
270
237
|
const proxyTraps = {
|
|
@@ -282,24 +249,14 @@ const proxyTraps = {
|
|
|
282
249
|
if (!tracked) {
|
|
283
250
|
const desc = Object.getOwnPropertyDescriptor(target, property);
|
|
284
251
|
const isFunction = typeof value === "function";
|
|
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]) {
|
|
252
|
+
if (getListener() && (!isFunction || target.hasOwnProperty(property)) && !(desc && desc.get)) value = getNode(nodes, property, value)();else if (value != null && isFunction && value === Array.prototype[property]) {
|
|
288
253
|
return (...args) => batch(() => Array.prototype[property].apply(receiver, args));
|
|
289
254
|
}
|
|
290
255
|
}
|
|
291
256
|
return isWrappable(value) ? wrap(value) : value;
|
|
292
257
|
},
|
|
293
258
|
has(target, property) {
|
|
294
|
-
if (
|
|
295
|
-
property === $RAW ||
|
|
296
|
-
property === $PROXY ||
|
|
297
|
-
property === $TRACK ||
|
|
298
|
-
property === $NODE ||
|
|
299
|
-
property === $HAS ||
|
|
300
|
-
property === "__proto__"
|
|
301
|
-
)
|
|
302
|
-
return true;
|
|
259
|
+
if (property === $RAW || property === $PROXY || property === $TRACK || property === $NODE || property === $HAS || property === "__proto__") return true;
|
|
303
260
|
getListener() && getNode(getNodes(target, $HAS), property)();
|
|
304
261
|
return property in target;
|
|
305
262
|
},
|
|
@@ -318,7 +275,7 @@ function wrap(value) {
|
|
|
318
275
|
let p = value[$PROXY];
|
|
319
276
|
if (!p) {
|
|
320
277
|
Object.defineProperty(value, $PROXY, {
|
|
321
|
-
value:
|
|
278
|
+
value: p = new Proxy(value, proxyTraps)
|
|
322
279
|
});
|
|
323
280
|
const keys = Object.keys(value),
|
|
324
281
|
desc = Object.getOwnPropertyDescriptors(value);
|
|
@@ -343,10 +300,7 @@ function wrap(value) {
|
|
|
343
300
|
}
|
|
344
301
|
function createMutable(state, options) {
|
|
345
302
|
const unwrappedStore = unwrap(state || {});
|
|
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
|
-
);
|
|
303
|
+
if (typeof unwrappedStore !== "object" && typeof unwrappedStore !== "function") throw new Error(`Unexpected type ${typeof unwrappedStore} received when initializing 'createMutable'. Expected an object.`);
|
|
350
304
|
const wrappedStore = wrap(unwrappedStore);
|
|
351
305
|
DEV$1.registerGraph({
|
|
352
306
|
value: unwrappedStore,
|
|
@@ -362,39 +316,20 @@ const $ROOT = Symbol("store-root");
|
|
|
362
316
|
function applyState(target, parent, property, merge, key) {
|
|
363
317
|
const previous = parent[property];
|
|
364
318
|
if (target === previous) return;
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
(!isWrappable(target) || !isWrappable(previous) || (key && target[key] !== previous[key]))
|
|
368
|
-
) {
|
|
319
|
+
const isArray = Array.isArray(target);
|
|
320
|
+
if (property !== $ROOT && (!isWrappable(target) || !isWrappable(previous) || isArray && !Array.isArray(previous) || key && target[key] !== previous[key])) {
|
|
369
321
|
setProperty(parent, property, target);
|
|
370
322
|
return;
|
|
371
323
|
}
|
|
372
|
-
if (
|
|
373
|
-
if (
|
|
374
|
-
target.length &&
|
|
375
|
-
previous.length &&
|
|
376
|
-
(!merge || (key && target[0] && target[0][key] != null))
|
|
377
|
-
) {
|
|
324
|
+
if (isArray) {
|
|
325
|
+
if (target.length && previous.length && (!merge || key && target[0] && target[0][key] != null)) {
|
|
378
326
|
let i, j, start, end, newEnd, item, newIndicesNext, keyVal;
|
|
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
|
-
) {
|
|
327
|
+
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++) {
|
|
386
328
|
applyState(target[start], previous, start, merge, key);
|
|
387
329
|
}
|
|
388
330
|
const temp = new Array(target.length),
|
|
389
331
|
newIndices = new Map();
|
|
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
|
-
) {
|
|
332
|
+
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--) {
|
|
398
333
|
temp[newEnd] = previous[end];
|
|
399
334
|
}
|
|
400
335
|
if (start > newEnd || start > end) {
|
|
@@ -448,19 +383,16 @@ function applyState(target, parent, property, merge, key) {
|
|
|
448
383
|
}
|
|
449
384
|
}
|
|
450
385
|
function reconcile(value, options = {}) {
|
|
451
|
-
const {
|
|
386
|
+
const {
|
|
387
|
+
merge,
|
|
388
|
+
key = "id"
|
|
389
|
+
} = options,
|
|
452
390
|
v = unwrap(value);
|
|
453
391
|
return state => {
|
|
454
392
|
if (!isWrappable(state) || !isWrappable(v)) return v;
|
|
455
|
-
const res = applyState(
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
[$ROOT]: state
|
|
459
|
-
},
|
|
460
|
-
$ROOT,
|
|
461
|
-
merge,
|
|
462
|
-
key
|
|
463
|
-
);
|
|
393
|
+
const res = applyState(v, {
|
|
394
|
+
[$ROOT]: state
|
|
395
|
+
}, $ROOT, merge, key);
|
|
464
396
|
return res === undefined ? state : res;
|
|
465
397
|
};
|
|
466
398
|
}
|
|
@@ -470,10 +402,7 @@ const setterTraps = {
|
|
|
470
402
|
if (property === $RAW) return target;
|
|
471
403
|
const value = target[property];
|
|
472
404
|
let proxy;
|
|
473
|
-
return isWrappable(value)
|
|
474
|
-
? producers.get(value) ||
|
|
475
|
-
(producers.set(value, (proxy = new Proxy(value, setterTraps))), proxy)
|
|
476
|
-
: value;
|
|
405
|
+
return isWrappable(value) ? producers.get(value) || (producers.set(value, proxy = new Proxy(value, setterTraps)), proxy) : value;
|
|
477
406
|
},
|
|
478
407
|
set(target, property, value) {
|
|
479
408
|
setProperty(target, property, unwrap(value));
|
|
@@ -489,7 +418,7 @@ function produce(fn) {
|
|
|
489
418
|
if (isWrappable(state)) {
|
|
490
419
|
let proxy;
|
|
491
420
|
if (!(proxy = producers.get(state))) {
|
|
492
|
-
producers.set(state,
|
|
421
|
+
producers.set(state, proxy = new Proxy(state, setterTraps));
|
|
493
422
|
}
|
|
494
423
|
fn(proxy);
|
|
495
424
|
}
|
|
@@ -501,6 +430,6 @@ const DEV = {
|
|
|
501
430
|
$NODE,
|
|
502
431
|
isWrappable,
|
|
503
432
|
hooks: DevHooks
|
|
504
|
-
};
|
|
433
|
+
} ;
|
|
505
434
|
|
|
506
435
|
export { $RAW, DEV, createMutable, createStore, modifyMutable, produce, reconcile, unwrap };
|
package/store/dist/server.js
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
const $RAW = Symbol("state-raw");
|
|
2
2
|
function isWrappable(obj) {
|
|
3
|
-
return (
|
|
4
|
-
obj != null &&
|
|
5
|
-
typeof obj === "object" &&
|
|
6
|
-
(Object.getPrototypeOf(obj) === Object.prototype || Array.isArray(obj))
|
|
7
|
-
);
|
|
3
|
+
return obj != null && typeof obj === "object" && (Object.getPrototypeOf(obj) === Object.prototype || Array.isArray(obj));
|
|
8
4
|
}
|
|
9
5
|
function unwrap(item) {
|
|
10
6
|
return item;
|
|
@@ -53,7 +49,11 @@ function updatePath(current, path, traversed = []) {
|
|
|
53
49
|
}
|
|
54
50
|
return;
|
|
55
51
|
} else if (isArray && partType === "object") {
|
|
56
|
-
const {
|
|
52
|
+
const {
|
|
53
|
+
from = 0,
|
|
54
|
+
to = current.length - 1,
|
|
55
|
+
by = 1
|
|
56
|
+
} = 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 ||
|
|
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,15 +108,4 @@ function produce(fn) {
|
|
|
108
108
|
}
|
|
109
109
|
const DEV = undefined;
|
|
110
110
|
|
|
111
|
-
export {
|
|
112
|
-
$RAW,
|
|
113
|
-
DEV,
|
|
114
|
-
createMutable,
|
|
115
|
-
createStore,
|
|
116
|
-
isWrappable,
|
|
117
|
-
produce,
|
|
118
|
-
reconcile,
|
|
119
|
-
setProperty,
|
|
120
|
-
unwrap,
|
|
121
|
-
updatePath
|
|
122
|
-
};
|
|
111
|
+
export { $RAW, DEV, createMutable, createStore, isWrappable, produce, reconcile, setProperty, unwrap, updatePath };
|
package/store/dist/store.cjs
CHANGED
|
@@ -302,11 +302,12 @@ const $ROOT = Symbol("store-root");
|
|
|
302
302
|
function applyState(target, parent, property, merge, key) {
|
|
303
303
|
const previous = parent[property];
|
|
304
304
|
if (target === previous) return;
|
|
305
|
-
|
|
305
|
+
const isArray = Array.isArray(target);
|
|
306
|
+
if (property !== $ROOT && (!isWrappable(target) || !isWrappable(previous) || isArray && !Array.isArray(previous) || key && target[key] !== previous[key])) {
|
|
306
307
|
setProperty(parent, property, target);
|
|
307
308
|
return;
|
|
308
309
|
}
|
|
309
|
-
if (
|
|
310
|
+
if (isArray) {
|
|
310
311
|
if (target.length && previous.length && (!merge || key && target[0] && target[0][key] != null)) {
|
|
311
312
|
let i, j, start, end, newEnd, item, newIndicesNext, keyVal;
|
|
312
313
|
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++) {
|