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.
Files changed (82) hide show
  1. package/dist/dev.cjs +733 -1678
  2. package/dist/dev.js +598 -1643
  3. package/dist/server.cjs +769 -703
  4. package/dist/server.js +682 -670
  5. package/dist/solid.cjs +699 -1618
  6. package/dist/solid.js +563 -1582
  7. package/package.json +7 -151
  8. package/types/{render → client}/component.d.ts +1 -38
  9. package/types/client/core.d.ts +65 -0
  10. package/types/client/flow.d.ts +100 -0
  11. package/types/client/hydration.d.ts +76 -0
  12. package/types/index.d.ts +11 -14
  13. package/types/jsx.d.ts +1508 -1633
  14. package/types/server/component.d.ts +66 -0
  15. package/types/server/core.d.ts +44 -0
  16. package/types/server/flow.d.ts +60 -0
  17. package/types/server/hydration.d.ts +21 -0
  18. package/types/server/index.d.ts +12 -3
  19. package/types/server/shared.d.ts +45 -0
  20. package/types/server/signals.d.ts +60 -0
  21. package/h/dist/h.cjs +0 -115
  22. package/h/dist/h.js +0 -113
  23. package/h/jsx-dev-runtime/package.json +0 -8
  24. package/h/jsx-runtime/dist/jsx.cjs +0 -15
  25. package/h/jsx-runtime/dist/jsx.js +0 -10
  26. package/h/jsx-runtime/package.json +0 -8
  27. package/h/jsx-runtime/types/index.d.ts +0 -11
  28. package/h/jsx-runtime/types/jsx.d.ts +0 -4242
  29. package/h/package.json +0 -8
  30. package/h/types/hyperscript.d.ts +0 -20
  31. package/h/types/index.d.ts +0 -3
  32. package/html/dist/html.cjs +0 -583
  33. package/html/dist/html.js +0 -581
  34. package/html/package.json +0 -8
  35. package/html/types/index.d.ts +0 -3
  36. package/html/types/lit.d.ts +0 -41
  37. package/store/dist/dev.cjs +0 -458
  38. package/store/dist/dev.js +0 -449
  39. package/store/dist/server.cjs +0 -126
  40. package/store/dist/server.js +0 -114
  41. package/store/dist/store.cjs +0 -438
  42. package/store/dist/store.js +0 -429
  43. package/store/package.json +0 -46
  44. package/store/types/index.d.ts +0 -12
  45. package/store/types/modifiers.d.ts +0 -6
  46. package/store/types/mutable.d.ts +0 -5
  47. package/store/types/server.d.ts +0 -17
  48. package/store/types/store.d.ts +0 -107
  49. package/types/reactive/array.d.ts +0 -44
  50. package/types/reactive/observable.d.ts +0 -36
  51. package/types/reactive/scheduler.d.ts +0 -10
  52. package/types/reactive/signal.d.ts +0 -577
  53. package/types/render/Suspense.d.ts +0 -26
  54. package/types/render/flow.d.ts +0 -118
  55. package/types/render/hydration.d.ts +0 -24
  56. package/types/render/index.d.ts +0 -4
  57. package/types/server/reactive.d.ts +0 -98
  58. package/types/server/rendering.d.ts +0 -159
  59. package/universal/dist/dev.cjs +0 -245
  60. package/universal/dist/dev.js +0 -243
  61. package/universal/dist/universal.cjs +0 -245
  62. package/universal/dist/universal.js +0 -243
  63. package/universal/package.json +0 -20
  64. package/universal/types/index.d.ts +0 -3
  65. package/universal/types/universal.d.ts +0 -30
  66. package/web/dist/dev.cjs +0 -894
  67. package/web/dist/dev.js +0 -782
  68. package/web/dist/server.cjs +0 -892
  69. package/web/dist/server.js +0 -782
  70. package/web/dist/web.cjs +0 -883
  71. package/web/dist/web.js +0 -771
  72. package/web/package.json +0 -46
  73. package/web/storage/dist/storage.cjs +0 -12
  74. package/web/storage/dist/storage.js +0 -10
  75. package/web/storage/package.json +0 -15
  76. package/web/storage/types/index.d.ts +0 -2
  77. package/web/types/client.d.ts +0 -79
  78. package/web/types/core.d.ts +0 -2
  79. package/web/types/index.d.ts +0 -50
  80. package/web/types/jsx.d.ts +0 -1
  81. package/web/types/server-mock.d.ts +0 -65
  82. 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 };
@@ -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;
@@ -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 };