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