solid-js 1.9.11 → 2.0.0-beta.0
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 +733 -1678
- package/dist/dev.js +598 -1643
- package/dist/server.cjs +769 -703
- package/dist/server.js +682 -670
- package/dist/solid.cjs +699 -1618
- package/dist/solid.js +563 -1582
- package/package.json +7 -151
- package/types/{render → client}/component.d.ts +1 -38
- package/types/client/core.d.ts +65 -0
- package/types/client/flow.d.ts +100 -0
- package/types/client/hydration.d.ts +76 -0
- package/types/index.d.ts +11 -14
- package/types/jsx.d.ts +1508 -1633
- package/types/server/component.d.ts +66 -0
- package/types/server/core.d.ts +44 -0
- package/types/server/flow.d.ts +60 -0
- package/types/server/hydration.d.ts +21 -0
- package/types/server/index.d.ts +12 -3
- package/types/server/shared.d.ts +45 -0
- package/types/server/signals.d.ts +60 -0
- package/h/dist/h.cjs +0 -115
- package/h/dist/h.js +0 -113
- package/h/jsx-dev-runtime/package.json +0 -8
- package/h/jsx-runtime/dist/jsx.cjs +0 -15
- package/h/jsx-runtime/dist/jsx.js +0 -10
- package/h/jsx-runtime/package.json +0 -8
- package/h/jsx-runtime/types/index.d.ts +0 -11
- package/h/jsx-runtime/types/jsx.d.ts +0 -4242
- package/h/package.json +0 -8
- package/h/types/hyperscript.d.ts +0 -20
- package/h/types/index.d.ts +0 -3
- package/html/dist/html.cjs +0 -583
- package/html/dist/html.js +0 -581
- package/html/package.json +0 -8
- package/html/types/index.d.ts +0 -3
- package/html/types/lit.d.ts +0 -41
- package/store/dist/dev.cjs +0 -458
- package/store/dist/dev.js +0 -449
- package/store/dist/server.cjs +0 -126
- package/store/dist/server.js +0 -114
- package/store/dist/store.cjs +0 -438
- package/store/dist/store.js +0 -429
- package/store/package.json +0 -46
- package/store/types/index.d.ts +0 -12
- package/store/types/modifiers.d.ts +0 -6
- package/store/types/mutable.d.ts +0 -5
- package/store/types/server.d.ts +0 -17
- package/store/types/store.d.ts +0 -107
- package/types/reactive/array.d.ts +0 -44
- package/types/reactive/observable.d.ts +0 -36
- package/types/reactive/scheduler.d.ts +0 -10
- package/types/reactive/signal.d.ts +0 -577
- package/types/render/Suspense.d.ts +0 -26
- package/types/render/flow.d.ts +0 -118
- package/types/render/hydration.d.ts +0 -24
- package/types/render/index.d.ts +0 -4
- package/types/server/reactive.d.ts +0 -98
- package/types/server/rendering.d.ts +0 -159
- package/universal/dist/dev.cjs +0 -245
- package/universal/dist/dev.js +0 -243
- package/universal/dist/universal.cjs +0 -245
- package/universal/dist/universal.js +0 -243
- package/universal/package.json +0 -20
- package/universal/types/index.d.ts +0 -3
- package/universal/types/universal.d.ts +0 -30
- package/web/dist/dev.cjs +0 -894
- package/web/dist/dev.js +0 -782
- package/web/dist/server.cjs +0 -892
- package/web/dist/server.js +0 -782
- package/web/dist/web.cjs +0 -883
- package/web/dist/web.js +0 -771
- package/web/package.json +0 -46
- package/web/storage/dist/storage.cjs +0 -12
- package/web/storage/dist/storage.js +0 -10
- package/web/storage/package.json +0 -15
- package/web/storage/types/index.d.ts +0 -2
- package/web/types/client.d.ts +0 -79
- package/web/types/core.d.ts +0 -2
- package/web/types/index.d.ts +0 -50
- package/web/types/jsx.d.ts +0 -1
- package/web/types/server-mock.d.ts +0 -65
- package/web/types/server.d.ts +0 -177
package/store/dist/dev.js
DELETED
|
@@ -1,449 +0,0 @@
|
|
|
1
|
-
import { DEV as DEV$1, $PROXY, $TRACK, getListener, batch, createSignal } from 'solid-js';
|
|
2
|
-
|
|
3
|
-
const $RAW = Symbol("store-raw"),
|
|
4
|
-
$NODE = Symbol("store-node"),
|
|
5
|
-
$HAS = Symbol("store-has"),
|
|
6
|
-
$SELF = Symbol("store-self");
|
|
7
|
-
const DevHooks = {
|
|
8
|
-
onStoreNodeUpdate: null
|
|
9
|
-
};
|
|
10
|
-
function wrap$1(value) {
|
|
11
|
-
let p = value[$PROXY];
|
|
12
|
-
if (!p) {
|
|
13
|
-
Object.defineProperty(value, $PROXY, {
|
|
14
|
-
value: p = new Proxy(value, proxyTraps$1)
|
|
15
|
-
});
|
|
16
|
-
if (!Array.isArray(value)) {
|
|
17
|
-
const keys = Object.keys(value),
|
|
18
|
-
desc = Object.getOwnPropertyDescriptors(value);
|
|
19
|
-
for (let i = 0, l = keys.length; i < l; i++) {
|
|
20
|
-
const prop = keys[i];
|
|
21
|
-
if (desc[prop].get) {
|
|
22
|
-
Object.defineProperty(value, prop, {
|
|
23
|
-
enumerable: desc[prop].enumerable,
|
|
24
|
-
get: desc[prop].get.bind(p)
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
return p;
|
|
31
|
-
}
|
|
32
|
-
function isWrappable(obj) {
|
|
33
|
-
let proto;
|
|
34
|
-
return obj != null && typeof obj === "object" && (obj[$PROXY] || !(proto = Object.getPrototypeOf(obj)) || proto === Object.prototype || Array.isArray(obj));
|
|
35
|
-
}
|
|
36
|
-
function unwrap(item, set = new Set()) {
|
|
37
|
-
let result, unwrapped, v, prop;
|
|
38
|
-
if (result = item != null && item[$RAW]) return result;
|
|
39
|
-
if (!isWrappable(item) || set.has(item)) return item;
|
|
40
|
-
if (Array.isArray(item)) {
|
|
41
|
-
if (Object.isFrozen(item)) item = item.slice(0);else set.add(item);
|
|
42
|
-
for (let i = 0, l = item.length; i < l; i++) {
|
|
43
|
-
v = item[i];
|
|
44
|
-
if ((unwrapped = unwrap(v, set)) !== v) item[i] = unwrapped;
|
|
45
|
-
}
|
|
46
|
-
} else {
|
|
47
|
-
if (Object.isFrozen(item)) item = Object.assign({}, item);else set.add(item);
|
|
48
|
-
const keys = Object.keys(item),
|
|
49
|
-
desc = Object.getOwnPropertyDescriptors(item);
|
|
50
|
-
for (let i = 0, l = keys.length; i < l; i++) {
|
|
51
|
-
prop = keys[i];
|
|
52
|
-
if (desc[prop].get) continue;
|
|
53
|
-
v = item[prop];
|
|
54
|
-
if ((unwrapped = unwrap(v, set)) !== v) item[prop] = unwrapped;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
return item;
|
|
58
|
-
}
|
|
59
|
-
function getNodes(target, symbol) {
|
|
60
|
-
let nodes = target[symbol];
|
|
61
|
-
if (!nodes) Object.defineProperty(target, symbol, {
|
|
62
|
-
value: nodes = Object.create(null)
|
|
63
|
-
});
|
|
64
|
-
return nodes;
|
|
65
|
-
}
|
|
66
|
-
function getNode(nodes, property, value) {
|
|
67
|
-
if (nodes[property]) return nodes[property];
|
|
68
|
-
const [s, set] = createSignal(value, {
|
|
69
|
-
equals: false,
|
|
70
|
-
internal: true
|
|
71
|
-
});
|
|
72
|
-
s.$ = set;
|
|
73
|
-
return nodes[property] = s;
|
|
74
|
-
}
|
|
75
|
-
function proxyDescriptor$1(target, property) {
|
|
76
|
-
const desc = Reflect.getOwnPropertyDescriptor(target, property);
|
|
77
|
-
if (!desc || desc.get || !desc.configurable || property === $PROXY || property === $NODE) return desc;
|
|
78
|
-
delete desc.value;
|
|
79
|
-
delete desc.writable;
|
|
80
|
-
desc.get = () => target[$PROXY][property];
|
|
81
|
-
return desc;
|
|
82
|
-
}
|
|
83
|
-
function trackSelf(target) {
|
|
84
|
-
getListener() && getNode(getNodes(target, $NODE), $SELF)();
|
|
85
|
-
}
|
|
86
|
-
function ownKeys(target) {
|
|
87
|
-
trackSelf(target);
|
|
88
|
-
return Reflect.ownKeys(target);
|
|
89
|
-
}
|
|
90
|
-
const proxyTraps$1 = {
|
|
91
|
-
get(target, property, receiver) {
|
|
92
|
-
if (property === $RAW) return target;
|
|
93
|
-
if (property === $PROXY) return receiver;
|
|
94
|
-
if (property === $TRACK) {
|
|
95
|
-
trackSelf(target);
|
|
96
|
-
return receiver;
|
|
97
|
-
}
|
|
98
|
-
const nodes = getNodes(target, $NODE);
|
|
99
|
-
const tracked = nodes[property];
|
|
100
|
-
let value = tracked ? tracked() : target[property];
|
|
101
|
-
if (property === $NODE || property === $HAS || property === "__proto__") return value;
|
|
102
|
-
if (!tracked) {
|
|
103
|
-
const desc = Object.getOwnPropertyDescriptor(target, property);
|
|
104
|
-
if (getListener() && (typeof value !== "function" || target.hasOwnProperty(property)) && !(desc && desc.get)) value = getNode(nodes, property, value)();
|
|
105
|
-
}
|
|
106
|
-
return isWrappable(value) ? wrap$1(value) : value;
|
|
107
|
-
},
|
|
108
|
-
has(target, property) {
|
|
109
|
-
if (property === $RAW || property === $PROXY || property === $TRACK || property === $NODE || property === $HAS || property === "__proto__") return true;
|
|
110
|
-
getListener() && getNode(getNodes(target, $HAS), property)();
|
|
111
|
-
return property in target;
|
|
112
|
-
},
|
|
113
|
-
set() {
|
|
114
|
-
console.warn("Cannot mutate a Store directly");
|
|
115
|
-
return true;
|
|
116
|
-
},
|
|
117
|
-
deleteProperty() {
|
|
118
|
-
console.warn("Cannot mutate a Store directly");
|
|
119
|
-
return true;
|
|
120
|
-
},
|
|
121
|
-
ownKeys: ownKeys,
|
|
122
|
-
getOwnPropertyDescriptor: proxyDescriptor$1
|
|
123
|
-
};
|
|
124
|
-
function setProperty(state, property, value, deleting = false) {
|
|
125
|
-
if (!deleting && state[property] === value) return;
|
|
126
|
-
const prev = state[property],
|
|
127
|
-
len = state.length;
|
|
128
|
-
DevHooks.onStoreNodeUpdate && DevHooks.onStoreNodeUpdate(state, property, value, prev);
|
|
129
|
-
if (value === undefined) {
|
|
130
|
-
delete state[property];
|
|
131
|
-
if (state[$HAS] && state[$HAS][property] && prev !== undefined) state[$HAS][property].$();
|
|
132
|
-
} else {
|
|
133
|
-
state[property] = value;
|
|
134
|
-
if (state[$HAS] && state[$HAS][property] && prev === undefined) state[$HAS][property].$();
|
|
135
|
-
}
|
|
136
|
-
let nodes = getNodes(state, $NODE),
|
|
137
|
-
node;
|
|
138
|
-
if (node = getNode(nodes, property, prev)) node.$(() => value);
|
|
139
|
-
if (Array.isArray(state) && state.length !== len) {
|
|
140
|
-
for (let i = state.length; i < len; i++) (node = nodes[i]) && node.$();
|
|
141
|
-
(node = getNode(nodes, "length", len)) && node.$(state.length);
|
|
142
|
-
}
|
|
143
|
-
(node = nodes[$SELF]) && node.$();
|
|
144
|
-
}
|
|
145
|
-
function mergeStoreNode(state, value) {
|
|
146
|
-
const keys = Object.keys(value);
|
|
147
|
-
for (let i = 0; i < keys.length; i += 1) {
|
|
148
|
-
const key = keys[i];
|
|
149
|
-
setProperty(state, key, value[key]);
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
function updateArray(current, next) {
|
|
153
|
-
if (typeof next === "function") next = next(current);
|
|
154
|
-
next = unwrap(next);
|
|
155
|
-
if (Array.isArray(next)) {
|
|
156
|
-
if (current === next) return;
|
|
157
|
-
let i = 0,
|
|
158
|
-
len = next.length;
|
|
159
|
-
for (; i < len; i++) {
|
|
160
|
-
const value = next[i];
|
|
161
|
-
if (current[i] !== value) setProperty(current, i, value);
|
|
162
|
-
}
|
|
163
|
-
setProperty(current, "length", len);
|
|
164
|
-
} else mergeStoreNode(current, next);
|
|
165
|
-
}
|
|
166
|
-
function updatePath(current, path, traversed = []) {
|
|
167
|
-
let part,
|
|
168
|
-
prev = current;
|
|
169
|
-
if (path.length > 1) {
|
|
170
|
-
part = path.shift();
|
|
171
|
-
const partType = typeof part,
|
|
172
|
-
isArray = Array.isArray(current);
|
|
173
|
-
if (Array.isArray(part)) {
|
|
174
|
-
for (let i = 0; i < part.length; i++) {
|
|
175
|
-
updatePath(current, [part[i]].concat(path), traversed);
|
|
176
|
-
}
|
|
177
|
-
return;
|
|
178
|
-
} else if (isArray && partType === "function") {
|
|
179
|
-
for (let i = 0; i < current.length; i++) {
|
|
180
|
-
if (part(current[i], i)) updatePath(current, [i].concat(path), traversed);
|
|
181
|
-
}
|
|
182
|
-
return;
|
|
183
|
-
} else if (isArray && partType === "object") {
|
|
184
|
-
const {
|
|
185
|
-
from = 0,
|
|
186
|
-
to = current.length - 1,
|
|
187
|
-
by = 1
|
|
188
|
-
} = part;
|
|
189
|
-
for (let i = from; i <= to; i += by) {
|
|
190
|
-
updatePath(current, [i].concat(path), traversed);
|
|
191
|
-
}
|
|
192
|
-
return;
|
|
193
|
-
} else if (path.length > 1) {
|
|
194
|
-
updatePath(current[part], path, [part].concat(traversed));
|
|
195
|
-
return;
|
|
196
|
-
}
|
|
197
|
-
prev = current[part];
|
|
198
|
-
traversed = [part].concat(traversed);
|
|
199
|
-
}
|
|
200
|
-
let value = path[0];
|
|
201
|
-
if (typeof value === "function") {
|
|
202
|
-
value = value(prev, traversed);
|
|
203
|
-
if (value === prev) return;
|
|
204
|
-
}
|
|
205
|
-
if (part === undefined && value == undefined) return;
|
|
206
|
-
value = unwrap(value);
|
|
207
|
-
if (part === undefined || isWrappable(prev) && isWrappable(value) && !Array.isArray(value)) {
|
|
208
|
-
mergeStoreNode(prev, value);
|
|
209
|
-
} else setProperty(current, part, value);
|
|
210
|
-
}
|
|
211
|
-
function createStore(...[store, options]) {
|
|
212
|
-
const unwrappedStore = unwrap(store || {});
|
|
213
|
-
const isArray = Array.isArray(unwrappedStore);
|
|
214
|
-
if (typeof unwrappedStore !== "object" && typeof unwrappedStore !== "function") throw new Error(`Unexpected type ${typeof unwrappedStore} received when initializing 'createStore'. Expected an object.`);
|
|
215
|
-
const wrappedStore = wrap$1(unwrappedStore);
|
|
216
|
-
DEV$1.registerGraph({
|
|
217
|
-
value: unwrappedStore,
|
|
218
|
-
name: options && options.name
|
|
219
|
-
});
|
|
220
|
-
function setStore(...args) {
|
|
221
|
-
batch(() => {
|
|
222
|
-
isArray && args.length === 1 ? updateArray(unwrappedStore, args[0]) : updatePath(unwrappedStore, args);
|
|
223
|
-
});
|
|
224
|
-
}
|
|
225
|
-
return [wrappedStore, setStore];
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
function proxyDescriptor(target, property) {
|
|
229
|
-
const desc = Reflect.getOwnPropertyDescriptor(target, property);
|
|
230
|
-
if (!desc || desc.get || desc.set || !desc.configurable || property === $PROXY || property === $NODE) return desc;
|
|
231
|
-
delete desc.value;
|
|
232
|
-
delete desc.writable;
|
|
233
|
-
desc.get = () => target[$PROXY][property];
|
|
234
|
-
desc.set = v => target[$PROXY][property] = v;
|
|
235
|
-
return desc;
|
|
236
|
-
}
|
|
237
|
-
const proxyTraps = {
|
|
238
|
-
get(target, property, receiver) {
|
|
239
|
-
if (property === $RAW) return target;
|
|
240
|
-
if (property === $PROXY) return receiver;
|
|
241
|
-
if (property === $TRACK) {
|
|
242
|
-
trackSelf(target);
|
|
243
|
-
return receiver;
|
|
244
|
-
}
|
|
245
|
-
const nodes = getNodes(target, $NODE);
|
|
246
|
-
const tracked = nodes[property];
|
|
247
|
-
let value = tracked ? tracked() : target[property];
|
|
248
|
-
if (property === $NODE || property === $HAS || property === "__proto__") return value;
|
|
249
|
-
if (!tracked) {
|
|
250
|
-
const desc = Object.getOwnPropertyDescriptor(target, property);
|
|
251
|
-
const isFunction = typeof value === "function";
|
|
252
|
-
if (getListener() && (!isFunction || target.hasOwnProperty(property)) && !(desc && desc.get)) value = getNode(nodes, property, value)();else if (value != null && isFunction && value === Array.prototype[property]) {
|
|
253
|
-
return (...args) => batch(() => Array.prototype[property].apply(receiver, args));
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
return isWrappable(value) ? wrap(value) : value;
|
|
257
|
-
},
|
|
258
|
-
has(target, property) {
|
|
259
|
-
if (property === $RAW || property === $PROXY || property === $TRACK || property === $NODE || property === $HAS || property === "__proto__") return true;
|
|
260
|
-
getListener() && getNode(getNodes(target, $HAS), property)();
|
|
261
|
-
return property in target;
|
|
262
|
-
},
|
|
263
|
-
set(target, property, value) {
|
|
264
|
-
batch(() => setProperty(target, property, unwrap(value)));
|
|
265
|
-
return true;
|
|
266
|
-
},
|
|
267
|
-
deleteProperty(target, property) {
|
|
268
|
-
batch(() => setProperty(target, property, undefined, true));
|
|
269
|
-
return true;
|
|
270
|
-
},
|
|
271
|
-
ownKeys: ownKeys,
|
|
272
|
-
getOwnPropertyDescriptor: proxyDescriptor
|
|
273
|
-
};
|
|
274
|
-
function wrap(value) {
|
|
275
|
-
let p = value[$PROXY];
|
|
276
|
-
if (!p) {
|
|
277
|
-
Object.defineProperty(value, $PROXY, {
|
|
278
|
-
value: p = new Proxy(value, proxyTraps)
|
|
279
|
-
});
|
|
280
|
-
const keys = Object.keys(value),
|
|
281
|
-
desc = Object.getOwnPropertyDescriptors(value);
|
|
282
|
-
const proto = Object.getPrototypeOf(value);
|
|
283
|
-
const isClass = proto !== null && value !== null && typeof value === "object" && !Array.isArray(value) && proto !== Object.prototype;
|
|
284
|
-
if (isClass) {
|
|
285
|
-
let curProto = proto;
|
|
286
|
-
while (curProto != null) {
|
|
287
|
-
const descriptors = Object.getOwnPropertyDescriptors(curProto);
|
|
288
|
-
keys.push(...Object.keys(descriptors));
|
|
289
|
-
Object.assign(desc, descriptors);
|
|
290
|
-
curProto = Object.getPrototypeOf(curProto);
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
for (let i = 0, l = keys.length; i < l; i++) {
|
|
294
|
-
const prop = keys[i];
|
|
295
|
-
if (isClass && prop === "constructor") continue;
|
|
296
|
-
if (desc[prop].get) {
|
|
297
|
-
const get = desc[prop].get.bind(p);
|
|
298
|
-
Object.defineProperty(value, prop, {
|
|
299
|
-
get,
|
|
300
|
-
configurable: true
|
|
301
|
-
});
|
|
302
|
-
}
|
|
303
|
-
if (desc[prop].set) {
|
|
304
|
-
const og = desc[prop].set,
|
|
305
|
-
set = v => batch(() => og.call(p, v));
|
|
306
|
-
Object.defineProperty(value, prop, {
|
|
307
|
-
set,
|
|
308
|
-
configurable: true
|
|
309
|
-
});
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
return p;
|
|
314
|
-
}
|
|
315
|
-
function createMutable(state, options) {
|
|
316
|
-
const unwrappedStore = unwrap(state || {});
|
|
317
|
-
if (typeof unwrappedStore !== "object" && typeof unwrappedStore !== "function") throw new Error(`Unexpected type ${typeof unwrappedStore} received when initializing 'createMutable'. Expected an object.`);
|
|
318
|
-
const wrappedStore = wrap(unwrappedStore);
|
|
319
|
-
DEV$1.registerGraph({
|
|
320
|
-
value: unwrappedStore,
|
|
321
|
-
name: options && options.name
|
|
322
|
-
});
|
|
323
|
-
return wrappedStore;
|
|
324
|
-
}
|
|
325
|
-
function modifyMutable(state, modifier) {
|
|
326
|
-
batch(() => modifier(unwrap(state)));
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
const $ROOT = Symbol("store-root");
|
|
330
|
-
function applyState(target, parent, property, merge, key) {
|
|
331
|
-
const previous = parent[property];
|
|
332
|
-
if (target === previous) return;
|
|
333
|
-
const isArray = Array.isArray(target);
|
|
334
|
-
if (property !== $ROOT && (!isWrappable(target) || !isWrappable(previous) || isArray !== Array.isArray(previous) || key && target[key] !== previous[key])) {
|
|
335
|
-
setProperty(parent, property, target);
|
|
336
|
-
return;
|
|
337
|
-
}
|
|
338
|
-
if (isArray) {
|
|
339
|
-
if (target.length && previous.length && (!merge || key && target[0] && target[0][key] != null)) {
|
|
340
|
-
let i, j, start, end, newEnd, item, newIndicesNext, keyVal;
|
|
341
|
-
for (start = 0, end = Math.min(previous.length, target.length); start < end && (previous[start] === target[start] || key && previous[start] && target[start] && previous[start][key] && previous[start][key] === target[start][key]); start++) {
|
|
342
|
-
applyState(target[start], previous, start, merge, key);
|
|
343
|
-
}
|
|
344
|
-
const temp = new Array(target.length),
|
|
345
|
-
newIndices = new Map();
|
|
346
|
-
for (end = previous.length - 1, newEnd = target.length - 1; end >= start && newEnd >= start && (previous[end] === target[newEnd] || key && previous[end] && target[newEnd] && previous[end][key] && previous[end][key] === target[newEnd][key]); end--, newEnd--) {
|
|
347
|
-
temp[newEnd] = previous[end];
|
|
348
|
-
}
|
|
349
|
-
if (start > newEnd || start > end) {
|
|
350
|
-
for (j = start; j <= newEnd; j++) setProperty(previous, j, target[j]);
|
|
351
|
-
for (; j < target.length; j++) {
|
|
352
|
-
setProperty(previous, j, temp[j]);
|
|
353
|
-
applyState(target[j], previous, j, merge, key);
|
|
354
|
-
}
|
|
355
|
-
if (previous.length > target.length) setProperty(previous, "length", target.length);
|
|
356
|
-
return;
|
|
357
|
-
}
|
|
358
|
-
newIndicesNext = new Array(newEnd + 1);
|
|
359
|
-
for (j = newEnd; j >= start; j--) {
|
|
360
|
-
item = target[j];
|
|
361
|
-
keyVal = key && item ? item[key] : item;
|
|
362
|
-
i = newIndices.get(keyVal);
|
|
363
|
-
newIndicesNext[j] = i === undefined ? -1 : i;
|
|
364
|
-
newIndices.set(keyVal, j);
|
|
365
|
-
}
|
|
366
|
-
for (i = start; i <= end; i++) {
|
|
367
|
-
item = previous[i];
|
|
368
|
-
keyVal = key && item ? item[key] : item;
|
|
369
|
-
j = newIndices.get(keyVal);
|
|
370
|
-
if (j !== undefined && j !== -1) {
|
|
371
|
-
temp[j] = previous[i];
|
|
372
|
-
j = newIndicesNext[j];
|
|
373
|
-
newIndices.set(keyVal, j);
|
|
374
|
-
}
|
|
375
|
-
}
|
|
376
|
-
for (j = start; j < target.length; j++) {
|
|
377
|
-
if (j in temp) {
|
|
378
|
-
setProperty(previous, j, temp[j]);
|
|
379
|
-
applyState(target[j], previous, j, merge, key);
|
|
380
|
-
} else setProperty(previous, j, target[j]);
|
|
381
|
-
}
|
|
382
|
-
} else {
|
|
383
|
-
for (let i = 0, len = target.length; i < len; i++) {
|
|
384
|
-
applyState(target[i], previous, i, merge, key);
|
|
385
|
-
}
|
|
386
|
-
}
|
|
387
|
-
if (previous.length > target.length) setProperty(previous, "length", target.length);
|
|
388
|
-
return;
|
|
389
|
-
}
|
|
390
|
-
const targetKeys = Object.keys(target);
|
|
391
|
-
for (let i = 0, len = targetKeys.length; i < len; i++) {
|
|
392
|
-
applyState(target[targetKeys[i]], previous, targetKeys[i], merge, key);
|
|
393
|
-
}
|
|
394
|
-
const previousKeys = Object.keys(previous);
|
|
395
|
-
for (let i = 0, len = previousKeys.length; i < len; i++) {
|
|
396
|
-
if (target[previousKeys[i]] === undefined) setProperty(previous, previousKeys[i], undefined);
|
|
397
|
-
}
|
|
398
|
-
}
|
|
399
|
-
function reconcile(value, options = {}) {
|
|
400
|
-
const {
|
|
401
|
-
merge,
|
|
402
|
-
key = "id"
|
|
403
|
-
} = options,
|
|
404
|
-
v = unwrap(value);
|
|
405
|
-
return state => {
|
|
406
|
-
if (!isWrappable(state) || !isWrappable(v)) return v;
|
|
407
|
-
const res = applyState(v, {
|
|
408
|
-
[$ROOT]: state
|
|
409
|
-
}, $ROOT, merge, key);
|
|
410
|
-
return res === undefined ? state : res;
|
|
411
|
-
};
|
|
412
|
-
}
|
|
413
|
-
const producers = new WeakMap();
|
|
414
|
-
const setterTraps = {
|
|
415
|
-
get(target, property) {
|
|
416
|
-
if (property === $RAW) return target;
|
|
417
|
-
const value = target[property];
|
|
418
|
-
let proxy;
|
|
419
|
-
return isWrappable(value) ? producers.get(value) || (producers.set(value, proxy = new Proxy(value, setterTraps)), proxy) : value;
|
|
420
|
-
},
|
|
421
|
-
set(target, property, value) {
|
|
422
|
-
setProperty(target, property, unwrap(value));
|
|
423
|
-
return true;
|
|
424
|
-
},
|
|
425
|
-
deleteProperty(target, property) {
|
|
426
|
-
setProperty(target, property, undefined, true);
|
|
427
|
-
return true;
|
|
428
|
-
}
|
|
429
|
-
};
|
|
430
|
-
function produce(fn) {
|
|
431
|
-
return state => {
|
|
432
|
-
if (isWrappable(state)) {
|
|
433
|
-
let proxy;
|
|
434
|
-
if (!(proxy = producers.get(state))) {
|
|
435
|
-
producers.set(state, proxy = new Proxy(state, setterTraps));
|
|
436
|
-
}
|
|
437
|
-
fn(proxy);
|
|
438
|
-
}
|
|
439
|
-
return state;
|
|
440
|
-
};
|
|
441
|
-
}
|
|
442
|
-
|
|
443
|
-
const DEV = {
|
|
444
|
-
$NODE,
|
|
445
|
-
isWrappable,
|
|
446
|
-
hooks: DevHooks
|
|
447
|
-
} ;
|
|
448
|
-
|
|
449
|
-
export { $RAW, DEV, createMutable, createStore, modifyMutable, produce, reconcile, unwrap };
|
package/store/dist/server.cjs
DELETED
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const $RAW = Symbol("state-raw");
|
|
4
|
-
function isWrappable(obj) {
|
|
5
|
-
return obj != null && typeof obj === "object" && (Object.getPrototypeOf(obj) === Object.prototype || Array.isArray(obj));
|
|
6
|
-
}
|
|
7
|
-
function unwrap(item) {
|
|
8
|
-
return item;
|
|
9
|
-
}
|
|
10
|
-
function setProperty(state, property, value, force) {
|
|
11
|
-
if (!force && state[property] === value) return;
|
|
12
|
-
if (value === undefined) {
|
|
13
|
-
delete state[property];
|
|
14
|
-
} else state[property] = value;
|
|
15
|
-
}
|
|
16
|
-
function mergeStoreNode(state, value, force) {
|
|
17
|
-
const keys = Object.keys(value);
|
|
18
|
-
for (let i = 0; i < keys.length; i += 1) {
|
|
19
|
-
const key = keys[i];
|
|
20
|
-
setProperty(state, key, value[key], force);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
function updateArray(current, next) {
|
|
24
|
-
if (typeof next === "function") next = next(current);
|
|
25
|
-
if (Array.isArray(next)) {
|
|
26
|
-
if (current === next) return;
|
|
27
|
-
let i = 0,
|
|
28
|
-
len = next.length;
|
|
29
|
-
for (; i < len; i++) {
|
|
30
|
-
const value = next[i];
|
|
31
|
-
if (current[i] !== value) setProperty(current, i, value);
|
|
32
|
-
}
|
|
33
|
-
setProperty(current, "length", len);
|
|
34
|
-
} else mergeStoreNode(current, next);
|
|
35
|
-
}
|
|
36
|
-
function updatePath(current, path, traversed = []) {
|
|
37
|
-
let part,
|
|
38
|
-
next = current;
|
|
39
|
-
if (path.length > 1) {
|
|
40
|
-
part = path.shift();
|
|
41
|
-
const partType = typeof part,
|
|
42
|
-
isArray = Array.isArray(current);
|
|
43
|
-
if (Array.isArray(part)) {
|
|
44
|
-
for (let i = 0; i < part.length; i++) {
|
|
45
|
-
updatePath(current, [part[i]].concat(path), traversed);
|
|
46
|
-
}
|
|
47
|
-
return;
|
|
48
|
-
} else if (isArray && partType === "function") {
|
|
49
|
-
for (let i = 0; i < current.length; i++) {
|
|
50
|
-
if (part(current[i], i)) updatePath(current, [i].concat(path), traversed);
|
|
51
|
-
}
|
|
52
|
-
return;
|
|
53
|
-
} else if (isArray && partType === "object") {
|
|
54
|
-
const {
|
|
55
|
-
from = 0,
|
|
56
|
-
to = current.length - 1,
|
|
57
|
-
by = 1
|
|
58
|
-
} = part;
|
|
59
|
-
for (let i = from; i <= to; i += by) {
|
|
60
|
-
updatePath(current, [i].concat(path), traversed);
|
|
61
|
-
}
|
|
62
|
-
return;
|
|
63
|
-
} else if (path.length > 1) {
|
|
64
|
-
updatePath(current[part], path, [part].concat(traversed));
|
|
65
|
-
return;
|
|
66
|
-
}
|
|
67
|
-
next = current[part];
|
|
68
|
-
traversed = [part].concat(traversed);
|
|
69
|
-
}
|
|
70
|
-
let value = path[0];
|
|
71
|
-
if (typeof value === "function") {
|
|
72
|
-
value = value(next, traversed);
|
|
73
|
-
if (value === next) return;
|
|
74
|
-
}
|
|
75
|
-
if (part === undefined && value == undefined) return;
|
|
76
|
-
if (part === undefined || isWrappable(next) && isWrappable(value) && !Array.isArray(value)) {
|
|
77
|
-
mergeStoreNode(next, value);
|
|
78
|
-
} else setProperty(current, part, value);
|
|
79
|
-
}
|
|
80
|
-
function createStore(state) {
|
|
81
|
-
const isArray = Array.isArray(state);
|
|
82
|
-
function setStore(...args) {
|
|
83
|
-
isArray && args.length === 1 ? updateArray(state, args[0]) : updatePath(state, args);
|
|
84
|
-
}
|
|
85
|
-
return [state, setStore];
|
|
86
|
-
}
|
|
87
|
-
function createMutable(state) {
|
|
88
|
-
return state;
|
|
89
|
-
}
|
|
90
|
-
function modifyMutable(state, modifier) {
|
|
91
|
-
modifier(state);
|
|
92
|
-
}
|
|
93
|
-
function reconcile(value, options = {}) {
|
|
94
|
-
return state => {
|
|
95
|
-
if (!isWrappable(state) || !isWrappable(value)) return value;
|
|
96
|
-
const targetKeys = Object.keys(value);
|
|
97
|
-
for (let i = 0, len = targetKeys.length; i < len; i++) {
|
|
98
|
-
const key = targetKeys[i];
|
|
99
|
-
setProperty(state, key, value[key]);
|
|
100
|
-
}
|
|
101
|
-
const previousKeys = Object.keys(state);
|
|
102
|
-
for (let i = 0, len = previousKeys.length; i < len; i++) {
|
|
103
|
-
if (value[previousKeys[i]] === undefined) setProperty(state, previousKeys[i], undefined);
|
|
104
|
-
}
|
|
105
|
-
return state;
|
|
106
|
-
};
|
|
107
|
-
}
|
|
108
|
-
function produce(fn) {
|
|
109
|
-
return state => {
|
|
110
|
-
if (isWrappable(state)) fn(state);
|
|
111
|
-
return state;
|
|
112
|
-
};
|
|
113
|
-
}
|
|
114
|
-
const DEV = undefined;
|
|
115
|
-
|
|
116
|
-
exports.$RAW = $RAW;
|
|
117
|
-
exports.DEV = DEV;
|
|
118
|
-
exports.createMutable = createMutable;
|
|
119
|
-
exports.createStore = createStore;
|
|
120
|
-
exports.isWrappable = isWrappable;
|
|
121
|
-
exports.modifyMutable = modifyMutable;
|
|
122
|
-
exports.produce = produce;
|
|
123
|
-
exports.reconcile = reconcile;
|
|
124
|
-
exports.setProperty = setProperty;
|
|
125
|
-
exports.unwrap = unwrap;
|
|
126
|
-
exports.updatePath = updatePath;
|
package/store/dist/server.js
DELETED
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
const $RAW = Symbol("state-raw");
|
|
2
|
-
function isWrappable(obj) {
|
|
3
|
-
return obj != null && typeof obj === "object" && (Object.getPrototypeOf(obj) === Object.prototype || Array.isArray(obj));
|
|
4
|
-
}
|
|
5
|
-
function unwrap(item) {
|
|
6
|
-
return item;
|
|
7
|
-
}
|
|
8
|
-
function setProperty(state, property, value, force) {
|
|
9
|
-
if (!force && state[property] === value) return;
|
|
10
|
-
if (value === undefined) {
|
|
11
|
-
delete state[property];
|
|
12
|
-
} else state[property] = value;
|
|
13
|
-
}
|
|
14
|
-
function mergeStoreNode(state, value, force) {
|
|
15
|
-
const keys = Object.keys(value);
|
|
16
|
-
for (let i = 0; i < keys.length; i += 1) {
|
|
17
|
-
const key = keys[i];
|
|
18
|
-
setProperty(state, key, value[key], force);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
function updateArray(current, next) {
|
|
22
|
-
if (typeof next === "function") next = next(current);
|
|
23
|
-
if (Array.isArray(next)) {
|
|
24
|
-
if (current === next) return;
|
|
25
|
-
let i = 0,
|
|
26
|
-
len = next.length;
|
|
27
|
-
for (; i < len; i++) {
|
|
28
|
-
const value = next[i];
|
|
29
|
-
if (current[i] !== value) setProperty(current, i, value);
|
|
30
|
-
}
|
|
31
|
-
setProperty(current, "length", len);
|
|
32
|
-
} else mergeStoreNode(current, next);
|
|
33
|
-
}
|
|
34
|
-
function updatePath(current, path, traversed = []) {
|
|
35
|
-
let part,
|
|
36
|
-
next = current;
|
|
37
|
-
if (path.length > 1) {
|
|
38
|
-
part = path.shift();
|
|
39
|
-
const partType = typeof part,
|
|
40
|
-
isArray = Array.isArray(current);
|
|
41
|
-
if (Array.isArray(part)) {
|
|
42
|
-
for (let i = 0; i < part.length; i++) {
|
|
43
|
-
updatePath(current, [part[i]].concat(path), traversed);
|
|
44
|
-
}
|
|
45
|
-
return;
|
|
46
|
-
} else if (isArray && partType === "function") {
|
|
47
|
-
for (let i = 0; i < current.length; i++) {
|
|
48
|
-
if (part(current[i], i)) updatePath(current, [i].concat(path), traversed);
|
|
49
|
-
}
|
|
50
|
-
return;
|
|
51
|
-
} else if (isArray && partType === "object") {
|
|
52
|
-
const {
|
|
53
|
-
from = 0,
|
|
54
|
-
to = current.length - 1,
|
|
55
|
-
by = 1
|
|
56
|
-
} = part;
|
|
57
|
-
for (let i = from; i <= to; i += by) {
|
|
58
|
-
updatePath(current, [i].concat(path), traversed);
|
|
59
|
-
}
|
|
60
|
-
return;
|
|
61
|
-
} else if (path.length > 1) {
|
|
62
|
-
updatePath(current[part], path, [part].concat(traversed));
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
|
-
next = current[part];
|
|
66
|
-
traversed = [part].concat(traversed);
|
|
67
|
-
}
|
|
68
|
-
let value = path[0];
|
|
69
|
-
if (typeof value === "function") {
|
|
70
|
-
value = value(next, traversed);
|
|
71
|
-
if (value === next) return;
|
|
72
|
-
}
|
|
73
|
-
if (part === undefined && value == undefined) return;
|
|
74
|
-
if (part === undefined || isWrappable(next) && isWrappable(value) && !Array.isArray(value)) {
|
|
75
|
-
mergeStoreNode(next, value);
|
|
76
|
-
} else setProperty(current, part, value);
|
|
77
|
-
}
|
|
78
|
-
function createStore(state) {
|
|
79
|
-
const isArray = Array.isArray(state);
|
|
80
|
-
function setStore(...args) {
|
|
81
|
-
isArray && args.length === 1 ? updateArray(state, args[0]) : updatePath(state, args);
|
|
82
|
-
}
|
|
83
|
-
return [state, setStore];
|
|
84
|
-
}
|
|
85
|
-
function createMutable(state) {
|
|
86
|
-
return state;
|
|
87
|
-
}
|
|
88
|
-
function modifyMutable(state, modifier) {
|
|
89
|
-
modifier(state);
|
|
90
|
-
}
|
|
91
|
-
function reconcile(value, options = {}) {
|
|
92
|
-
return state => {
|
|
93
|
-
if (!isWrappable(state) || !isWrappable(value)) return value;
|
|
94
|
-
const targetKeys = Object.keys(value);
|
|
95
|
-
for (let i = 0, len = targetKeys.length; i < len; i++) {
|
|
96
|
-
const key = targetKeys[i];
|
|
97
|
-
setProperty(state, key, value[key]);
|
|
98
|
-
}
|
|
99
|
-
const previousKeys = Object.keys(state);
|
|
100
|
-
for (let i = 0, len = previousKeys.length; i < len; i++) {
|
|
101
|
-
if (value[previousKeys[i]] === undefined) setProperty(state, previousKeys[i], undefined);
|
|
102
|
-
}
|
|
103
|
-
return state;
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
|
-
function produce(fn) {
|
|
107
|
-
return state => {
|
|
108
|
-
if (isWrappable(state)) fn(state);
|
|
109
|
-
return state;
|
|
110
|
-
};
|
|
111
|
-
}
|
|
112
|
-
const DEV = undefined;
|
|
113
|
-
|
|
114
|
-
export { $RAW, DEV, createMutable, createStore, isWrappable, modifyMutable, produce, reconcile, setProperty, unwrap, updatePath };
|