solid-js 1.4.3 → 1.4.6

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/solid.js CHANGED
@@ -156,16 +156,18 @@ let ExecCount = 0;
156
156
  function createRoot(fn, detachedOwner) {
157
157
  const listener = Listener,
158
158
  owner = Owner,
159
- root = fn.length === 0 && !false ? UNOWNED : {
159
+ unowned = fn.length === 0,
160
+ root = unowned && !false ? UNOWNED : {
160
161
  owned: null,
161
162
  cleanups: null,
162
163
  context: null,
163
164
  owner: detachedOwner || owner
164
- };
165
+ },
166
+ updateFn = unowned ? fn : () => fn(() => cleanNode(root));
165
167
  Owner = root;
166
168
  Listener = null;
167
169
  try {
168
- return runUpdates(() => fn(() => cleanNode(root)), true);
170
+ return runUpdates(updateFn, true);
169
171
  } finally {
170
172
  Listener = listener;
171
173
  Owner = owner;
@@ -741,10 +743,8 @@ function runUpdates(fn, init) {
741
743
  completeUpdates(wait);
742
744
  return res;
743
745
  } catch (err) {
746
+ if (!Updates) Effects = null;
744
747
  handleError(err);
745
- } finally {
746
- Updates = null;
747
- if (!wait) Effects = null;
748
748
  }
749
749
  }
750
750
  function completeUpdates(wait) {
@@ -763,14 +763,16 @@ function completeUpdates(wait) {
763
763
  return;
764
764
  }
765
765
  const sources = Transition.sources;
766
+ const disposed = Transition.disposed;
766
767
  res = Transition.resolve;
767
- Effects.forEach(e => {
768
+ for (const e of Effects) {
768
769
  "tState" in e && (e.state = e.tState);
769
770
  delete e.tState;
770
- });
771
+ }
771
772
  Transition = null;
772
773
  batch(() => {
773
- sources.forEach(v => {
774
+ for (const d of disposed) cleanNode(d);
775
+ for (const v of sources) {
774
776
  v.value = v.tValue;
775
777
  if (v.owned) {
776
778
  for (let i = 0, len = v.owned.length; i < len; i++) cleanNode(v.owned[i]);
@@ -779,7 +781,7 @@ function completeUpdates(wait) {
779
781
  delete v.tValue;
780
782
  delete v.tOwned;
781
783
  v.tState = 0;
782
- });
784
+ }
783
785
  setTransPending(false);
784
786
  });
785
787
  }
@@ -897,7 +899,7 @@ function reset(node, top) {
897
899
  function handleError(err) {
898
900
  const fns = ERROR && lookup(Owner, ERROR);
899
901
  if (!fns) throw err;
900
- fns.forEach(f => f(err));
902
+ for (const f of fns) f(err);
901
903
  }
902
904
  function lookup(owner, key) {
903
905
  return owner ? owner.context && owner.context[key] !== undefined ? owner.context[key] : lookup(owner.owner, key) : undefined;
@@ -1353,27 +1355,24 @@ function ErrorBoundary(props) {
1353
1355
 
1354
1356
  const SuspenseListContext = createContext();
1355
1357
  function SuspenseList(props) {
1356
- let index = 0,
1357
- suspenseSetter,
1358
- showContent,
1359
- showFallback;
1358
+ let suspenseSetter, showContent, showFallback;
1360
1359
  const listContext = useContext(SuspenseListContext);
1361
1360
  if (listContext) {
1362
1361
  const [inFallback, setFallback] = createSignal(false);
1363
1362
  suspenseSetter = setFallback;
1364
1363
  [showContent, showFallback] = listContext.register(inFallback);
1365
1364
  }
1366
- const registry = [],
1365
+ const [registry, setRegistry] = createSignal([]),
1367
1366
  comp = createComponent(SuspenseListContext.Provider, {
1368
1367
  value: {
1369
1368
  register: inFallback => {
1370
1369
  const [showingContent, showContent] = createSignal(false),
1371
1370
  [showingFallback, showFallback] = createSignal(false);
1372
- registry[index++] = {
1371
+ setRegistry(registry => [...registry, {
1373
1372
  inFallback,
1374
1373
  showContent,
1375
1374
  showFallback
1376
- };
1375
+ }]);
1377
1376
  return [showingContent, showingFallback];
1378
1377
  }
1379
1378
  },
@@ -1386,31 +1385,32 @@ function SuspenseList(props) {
1386
1385
  tail = props.tail,
1387
1386
  visibleContent = showContent ? showContent() : true,
1388
1387
  visibleFallback = showFallback ? showFallback() : true,
1388
+ reg = registry(),
1389
1389
  reverse = reveal === "backwards";
1390
1390
  if (reveal === "together") {
1391
- const all = registry.every(i => !i.inFallback());
1391
+ const all = reg.every(i => !i.inFallback());
1392
1392
  suspenseSetter && suspenseSetter(!all);
1393
- registry.forEach(i => {
1393
+ reg.forEach(i => {
1394
1394
  i.showContent(all && visibleContent);
1395
1395
  i.showFallback(visibleFallback);
1396
1396
  });
1397
1397
  return;
1398
1398
  }
1399
1399
  let stop = false;
1400
- for (let i = 0, len = registry.length; i < len; i++) {
1400
+ for (let i = 0, len = reg.length; i < len; i++) {
1401
1401
  const n = reverse ? len - i - 1 : i,
1402
- s = registry[n].inFallback();
1402
+ s = reg[n].inFallback();
1403
1403
  if (!stop && !s) {
1404
- registry[n].showContent(visibleContent);
1405
- registry[n].showFallback(visibleFallback);
1404
+ reg[n].showContent(visibleContent);
1405
+ reg[n].showFallback(visibleFallback);
1406
1406
  } else {
1407
1407
  const next = !stop;
1408
1408
  if (next && suspenseSetter) suspenseSetter(true);
1409
1409
  if (!tail || next && tail === "collapsed") {
1410
- registry[n].showFallback(visibleFallback);
1411
- } else registry[n].showFallback(false);
1410
+ reg[n].showFallback(visibleFallback);
1411
+ } else reg[n].showFallback(false);
1412
1412
  stop = true;
1413
- registry[n].showContent(next);
1413
+ reg[n].showContent(next);
1414
1414
  }
1415
1415
  }
1416
1416
  if (!stop && suspenseSetter) suspenseSetter(false);
@@ -1439,7 +1439,7 @@ function Suspense(props) {
1439
1439
  resolved: false
1440
1440
  },
1441
1441
  owner = getOwner();
1442
- if (sharedConfig.context) {
1442
+ if (sharedConfig.context && sharedConfig.load) {
1443
1443
  const key = sharedConfig.context.id + sharedConfig.context.count;
1444
1444
  p = sharedConfig.load(key);
1445
1445
  if (p) {
@@ -1472,7 +1472,7 @@ function Suspense(props) {
1472
1472
  return flicker = undefined;
1473
1473
  }
1474
1474
  if (ctx && p === undefined) setHydrateContext();
1475
- const rendered = untrack(() => props.children);
1475
+ const rendered = createMemo(() => props.children);
1476
1476
  return createMemo(() => {
1477
1477
  const inFallback = store.inFallback(),
1478
1478
  visibleContent = showContent ? showContent() : true,
@@ -1482,7 +1482,7 @@ function Suspense(props) {
1482
1482
  store.resolved = true;
1483
1483
  ctx = p = undefined;
1484
1484
  resumeEffects(store.effects);
1485
- return rendered;
1485
+ return rendered();
1486
1486
  }
1487
1487
  if (!visibleFallback) return;
1488
1488
  return createRoot(disposer => {
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.4.3",
4
+ "version": "1.4.6",
5
5
  "author": "Ryan Carniato",
6
6
  "license": "MIT",
7
7
  "homepage": "https://solidjs.com",
@@ -151,5 +151,5 @@
151
151
  "compiler",
152
152
  "performance"
153
153
  ],
154
- "gitHead": "44197a3f304400b055baef40da9ac661c0585b85"
154
+ "gitHead": "9dc1ba00f653c924cae926ef8a1f1c3da8f41bb5"
155
155
  }
@@ -31,7 +31,8 @@ function wrap$1(value, name) {
31
31
  return p;
32
32
  }
33
33
  function isWrappable(obj) {
34
- return obj != null && typeof obj === "object" && (obj[solidJs.$PROXY] || !obj.__proto__ || obj.__proto__ === Object.prototype || Array.isArray(obj));
34
+ let proto;
35
+ return obj != null && typeof obj === "object" && (obj[solidJs.$PROXY] || !(proto = Object.getPrototypeOf(obj)) || proto === Object.prototype || Array.isArray(obj));
35
36
  }
36
37
  function unwrap(item, set = new Set()) {
37
38
  let result, unwrapped, v, prop;
@@ -199,7 +200,7 @@ function updatePath(current, path, traversed = []) {
199
200
  mergeStoreNode(prev, value);
200
201
  } else setProperty(current, part, value);
201
202
  }
202
- function createStore(store, options) {
203
+ function createStore(...[store, options]) {
203
204
  const unwrappedStore = unwrap(store || {});
204
205
  const isArray = Array.isArray(unwrappedStore);
205
206
  if (typeof unwrappedStore !== "object" && typeof unwrappedStore !== "function") throw new Error(`Unexpected type ${typeof unwrappedStore} received when initializing 'createStore'. Expected an object.`);
@@ -237,11 +238,11 @@ const proxyTraps = {
237
238
  return isWrappable(value) ? wrap(value, target[$NAME] && `${target[$NAME]}:${property.toString()}`) : value;
238
239
  },
239
240
  set(target, property, value) {
240
- setProperty(target, property, unwrap(value));
241
+ solidJs.batch(() => setProperty(target, property, unwrap(value)));
241
242
  return true;
242
243
  },
243
244
  deleteProperty(target, property) {
244
- setProperty(target, property, undefined);
245
+ solidJs.batch(() => setProperty(target, property, undefined));
245
246
  return true;
246
247
  },
247
248
  ownKeys: ownKeys,
@@ -293,11 +294,15 @@ function modifyMutable(state, modifier) {
293
294
  solidJs.batch(() => modifier(unwrap(state)));
294
295
  }
295
296
 
297
+ const $ROOT = Symbol("store-root");
296
298
  function applyState(target, parent, property, merge, key) {
297
299
  const previous = parent[property];
298
300
  if (target === previous) return;
299
301
  if (!isWrappable(target) || !isWrappable(previous) || key && target[key] !== previous[key]) {
300
- target !== previous && setProperty(parent, property, target);
302
+ if (target !== previous) {
303
+ if (property === $ROOT) return target;
304
+ setProperty(parent, property, target);
305
+ }
301
306
  return;
302
307
  }
303
308
  if (Array.isArray(target)) {
@@ -369,10 +374,10 @@ function reconcile(value, options = {}) {
369
374
  v = unwrap(value);
370
375
  return state => {
371
376
  if (!isWrappable(state) || !isWrappable(v)) return v;
372
- solidJs.batch(() => applyState(v, {
373
- state
374
- }, "state", merge, key));
375
- return state;
377
+ const res = applyState(v, {
378
+ [$ROOT]: state
379
+ }, $ROOT, merge, key);
380
+ return res === undefined ? state : res;
376
381
  };
377
382
  }
378
383
  const producers = new WeakMap();
package/store/dist/dev.js CHANGED
@@ -27,7 +27,8 @@ function wrap$1(value, name) {
27
27
  return p;
28
28
  }
29
29
  function isWrappable(obj) {
30
- return obj != null && typeof obj === "object" && (obj[$PROXY] || !obj.__proto__ || obj.__proto__ === Object.prototype || Array.isArray(obj));
30
+ let proto;
31
+ return obj != null && typeof obj === "object" && (obj[$PROXY] || !(proto = Object.getPrototypeOf(obj)) || proto === Object.prototype || Array.isArray(obj));
31
32
  }
32
33
  function unwrap(item, set = new Set()) {
33
34
  let result, unwrapped, v, prop;
@@ -195,7 +196,7 @@ function updatePath(current, path, traversed = []) {
195
196
  mergeStoreNode(prev, value);
196
197
  } else setProperty(current, part, value);
197
198
  }
198
- function createStore(store, options) {
199
+ function createStore(...[store, options]) {
199
200
  const unwrappedStore = unwrap(store || {});
200
201
  const isArray = Array.isArray(unwrappedStore);
201
202
  if (typeof unwrappedStore !== "object" && typeof unwrappedStore !== "function") throw new Error(`Unexpected type ${typeof unwrappedStore} received when initializing 'createStore'. Expected an object.`);
@@ -233,11 +234,11 @@ const proxyTraps = {
233
234
  return isWrappable(value) ? wrap(value, target[$NAME] && `${target[$NAME]}:${property.toString()}`) : value;
234
235
  },
235
236
  set(target, property, value) {
236
- setProperty(target, property, unwrap(value));
237
+ batch(() => setProperty(target, property, unwrap(value)));
237
238
  return true;
238
239
  },
239
240
  deleteProperty(target, property) {
240
- setProperty(target, property, undefined);
241
+ batch(() => setProperty(target, property, undefined));
241
242
  return true;
242
243
  },
243
244
  ownKeys: ownKeys,
@@ -289,11 +290,15 @@ function modifyMutable(state, modifier) {
289
290
  batch(() => modifier(unwrap(state)));
290
291
  }
291
292
 
293
+ const $ROOT = Symbol("store-root");
292
294
  function applyState(target, parent, property, merge, key) {
293
295
  const previous = parent[property];
294
296
  if (target === previous) return;
295
297
  if (!isWrappable(target) || !isWrappable(previous) || key && target[key] !== previous[key]) {
296
- target !== previous && setProperty(parent, property, target);
298
+ if (target !== previous) {
299
+ if (property === $ROOT) return target;
300
+ setProperty(parent, property, target);
301
+ }
297
302
  return;
298
303
  }
299
304
  if (Array.isArray(target)) {
@@ -365,10 +370,10 @@ function reconcile(value, options = {}) {
365
370
  v = unwrap(value);
366
371
  return state => {
367
372
  if (!isWrappable(state) || !isWrappable(v)) return v;
368
- batch(() => applyState(v, {
369
- state
370
- }, "state", merge, key));
371
- return state;
373
+ const res = applyState(v, {
374
+ [$ROOT]: state
375
+ }, $ROOT, merge, key);
376
+ return res === undefined ? state : res;
372
377
  };
373
378
  }
374
379
  const producers = new WeakMap();
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const $RAW = Symbol("state-raw");
6
6
  function isWrappable(obj) {
7
- return obj != null && typeof obj === "object" && (obj.__proto__ === Object.prototype || Array.isArray(obj));
7
+ return obj != null && typeof obj === "object" && (Object.getPrototypeOf(obj) === Object.prototype || Array.isArray(obj));
8
8
  }
9
9
  function unwrap(item) {
10
10
  return item;
@@ -22,6 +22,19 @@ function mergeStoreNode(state, value, force) {
22
22
  setProperty(state, key, value[key], force);
23
23
  }
24
24
  }
25
+ function updateArray(current, next) {
26
+ if (typeof next === "function") next = next(current);
27
+ if (Array.isArray(next)) {
28
+ if (current === next) return;
29
+ let i = 0,
30
+ len = next.length;
31
+ for (; i < len; i++) {
32
+ const value = next[i];
33
+ if (current[i] !== value) setProperty(current, i, value);
34
+ }
35
+ setProperty(current, "length", len);
36
+ } else mergeStoreNode(current, next);
37
+ }
25
38
  function updatePath(current, path, traversed = []) {
26
39
  let part,
27
40
  next = current;
@@ -67,8 +80,9 @@ function updatePath(current, path, traversed = []) {
67
80
  } else setProperty(current, part, value);
68
81
  }
69
82
  function createStore(state) {
83
+ const isArray = Array.isArray(state);
70
84
  function setStore(...args) {
71
- updatePath(state, args);
85
+ isArray && args.length === 1 ? updateArray(state, args[0]) : updatePath(state, args);
72
86
  }
73
87
  return [state, setStore];
74
88
  }
@@ -1,6 +1,6 @@
1
1
  const $RAW = Symbol("state-raw");
2
2
  function isWrappable(obj) {
3
- return obj != null && typeof obj === "object" && (obj.__proto__ === Object.prototype || Array.isArray(obj));
3
+ return obj != null && typeof obj === "object" && (Object.getPrototypeOf(obj) === Object.prototype || Array.isArray(obj));
4
4
  }
5
5
  function unwrap(item) {
6
6
  return item;
@@ -18,6 +18,19 @@ function mergeStoreNode(state, value, force) {
18
18
  setProperty(state, key, value[key], force);
19
19
  }
20
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
+ }
21
34
  function updatePath(current, path, traversed = []) {
22
35
  let part,
23
36
  next = current;
@@ -63,8 +76,9 @@ function updatePath(current, path, traversed = []) {
63
76
  } else setProperty(current, part, value);
64
77
  }
65
78
  function createStore(state) {
79
+ const isArray = Array.isArray(state);
66
80
  function setStore(...args) {
67
- updatePath(state, args);
81
+ isArray && args.length === 1 ? updateArray(state, args[0]) : updatePath(state, args);
68
82
  }
69
83
  return [state, setStore];
70
84
  }
@@ -28,7 +28,8 @@ function wrap$1(value, name) {
28
28
  return p;
29
29
  }
30
30
  function isWrappable(obj) {
31
- return obj != null && typeof obj === "object" && (obj[solidJs.$PROXY] || !obj.__proto__ || obj.__proto__ === Object.prototype || Array.isArray(obj));
31
+ let proto;
32
+ return obj != null && typeof obj === "object" && (obj[solidJs.$PROXY] || !(proto = Object.getPrototypeOf(obj)) || proto === Object.prototype || Array.isArray(obj));
32
33
  }
33
34
  function unwrap(item, set = new Set()) {
34
35
  let result, unwrapped, v, prop;
@@ -194,7 +195,7 @@ function updatePath(current, path, traversed = []) {
194
195
  mergeStoreNode(prev, value);
195
196
  } else setProperty(current, part, value);
196
197
  }
197
- function createStore(store, options) {
198
+ function createStore(...[store, options]) {
198
199
  const unwrappedStore = unwrap(store || {});
199
200
  const isArray = Array.isArray(unwrappedStore);
200
201
  const wrappedStore = wrap$1(unwrappedStore);
@@ -225,11 +226,11 @@ const proxyTraps = {
225
226
  return isWrappable(value) ? wrap(value) : value;
226
227
  },
227
228
  set(target, property, value) {
228
- setProperty(target, property, unwrap(value));
229
+ solidJs.batch(() => setProperty(target, property, unwrap(value)));
229
230
  return true;
230
231
  },
231
232
  deleteProperty(target, property) {
232
- setProperty(target, property, undefined);
233
+ solidJs.batch(() => setProperty(target, property, undefined));
233
234
  return true;
234
235
  },
235
236
  ownKeys: ownKeys,
@@ -271,11 +272,15 @@ function modifyMutable(state, modifier) {
271
272
  solidJs.batch(() => modifier(unwrap(state)));
272
273
  }
273
274
 
275
+ const $ROOT = Symbol("store-root");
274
276
  function applyState(target, parent, property, merge, key) {
275
277
  const previous = parent[property];
276
278
  if (target === previous) return;
277
279
  if (!isWrappable(target) || !isWrappable(previous) || key && target[key] !== previous[key]) {
278
- target !== previous && setProperty(parent, property, target);
280
+ if (target !== previous) {
281
+ if (property === $ROOT) return target;
282
+ setProperty(parent, property, target);
283
+ }
279
284
  return;
280
285
  }
281
286
  if (Array.isArray(target)) {
@@ -347,10 +352,10 @@ function reconcile(value, options = {}) {
347
352
  v = unwrap(value);
348
353
  return state => {
349
354
  if (!isWrappable(state) || !isWrappable(v)) return v;
350
- solidJs.batch(() => applyState(v, {
351
- state
352
- }, "state", merge, key));
353
- return state;
355
+ const res = applyState(v, {
356
+ [$ROOT]: state
357
+ }, $ROOT, merge, key);
358
+ return res === undefined ? state : res;
354
359
  };
355
360
  }
356
361
  const producers = new WeakMap();
@@ -24,7 +24,8 @@ function wrap$1(value, name) {
24
24
  return p;
25
25
  }
26
26
  function isWrappable(obj) {
27
- return obj != null && typeof obj === "object" && (obj[$PROXY] || !obj.__proto__ || obj.__proto__ === Object.prototype || Array.isArray(obj));
27
+ let proto;
28
+ return obj != null && typeof obj === "object" && (obj[$PROXY] || !(proto = Object.getPrototypeOf(obj)) || proto === Object.prototype || Array.isArray(obj));
28
29
  }
29
30
  function unwrap(item, set = new Set()) {
30
31
  let result, unwrapped, v, prop;
@@ -190,7 +191,7 @@ function updatePath(current, path, traversed = []) {
190
191
  mergeStoreNode(prev, value);
191
192
  } else setProperty(current, part, value);
192
193
  }
193
- function createStore(store, options) {
194
+ function createStore(...[store, options]) {
194
195
  const unwrappedStore = unwrap(store || {});
195
196
  const isArray = Array.isArray(unwrappedStore);
196
197
  const wrappedStore = wrap$1(unwrappedStore);
@@ -221,11 +222,11 @@ const proxyTraps = {
221
222
  return isWrappable(value) ? wrap(value) : value;
222
223
  },
223
224
  set(target, property, value) {
224
- setProperty(target, property, unwrap(value));
225
+ batch(() => setProperty(target, property, unwrap(value)));
225
226
  return true;
226
227
  },
227
228
  deleteProperty(target, property) {
228
- setProperty(target, property, undefined);
229
+ batch(() => setProperty(target, property, undefined));
229
230
  return true;
230
231
  },
231
232
  ownKeys: ownKeys,
@@ -267,11 +268,15 @@ function modifyMutable(state, modifier) {
267
268
  batch(() => modifier(unwrap(state)));
268
269
  }
269
270
 
271
+ const $ROOT = Symbol("store-root");
270
272
  function applyState(target, parent, property, merge, key) {
271
273
  const previous = parent[property];
272
274
  if (target === previous) return;
273
275
  if (!isWrappable(target) || !isWrappable(previous) || key && target[key] !== previous[key]) {
274
- target !== previous && setProperty(parent, property, target);
276
+ if (target !== previous) {
277
+ if (property === $ROOT) return target;
278
+ setProperty(parent, property, target);
279
+ }
275
280
  return;
276
281
  }
277
282
  if (Array.isArray(target)) {
@@ -343,10 +348,10 @@ function reconcile(value, options = {}) {
343
348
  v = unwrap(value);
344
349
  return state => {
345
350
  if (!isWrappable(state) || !isWrappable(v)) return v;
346
- batch(() => applyState(v, {
347
- state
348
- }, "state", merge, key));
349
- return state;
351
+ const res = applyState(v, {
352
+ [$ROOT]: state
353
+ }, $ROOT, merge, key);
354
+ return res === undefined ? state : res;
350
355
  };
351
356
  }
352
357
  const producers = new WeakMap();
@@ -34,8 +34,8 @@ export declare type StorePathRange = {
34
34
  by?: number;
35
35
  };
36
36
  export declare type ArrayFilterFn<T> = (item: T, index: number) => boolean;
37
- export declare type StoreSetter<T, U extends PropertyKey[] = []> = ((prevState: T, traversed: U) => T | CustomPartial<T> | void) | T | CustomPartial<T>;
38
- export declare type Part<T, K extends KeyOf<T> = KeyOf<T>> = [K] extends [never] ? never : K | readonly K[] | ([T] extends [readonly unknown[]] ? ArrayFilterFn<T[number]> | StorePathRange : never);
37
+ export declare type StoreSetter<T, U extends PropertyKey[] = []> = ((prevState: T, traversed: U) => T | CustomPartial<T>) | T | CustomPartial<T>;
38
+ export declare type Part<T, K extends KeyOf<T> = KeyOf<T>> = K | ([K] extends [never] ? never : readonly K[]) | ([T] extends [readonly unknown[]] ? ArrayFilterFn<T[number]> | StorePathRange : never);
39
39
  declare type W<T> = Exclude<T, NotWrappable>;
40
40
  declare type KeyOf<T> = number extends keyof T ? 0 extends 1 & T ? keyof T : [T] extends [readonly unknown[]] ? number : [T] extends [never] ? never : keyof T : keyof T;
41
41
  declare type Rest<T, U extends PropertyKey[]> = [StoreSetter<T, U>] | (0 extends 1 & T ? [...Part<any>[], StoreSetter<any, PropertyKey[]>] : DistributeRest<W<T>, KeyOf<W<T>>, U>);
@@ -55,7 +55,9 @@ export interface SetStoreFunction<T> {
55
55
  *
56
56
  * @description https://www.solidjs.com/docs/latest/api#createstore
57
57
  */
58
- export declare function createStore<T extends StoreNode>(store: T | Store<T>, options?: {
58
+ export declare function createStore<T extends {}>(...[store, options]: {} extends T ? [store?: T | Store<T>, options?: {
59
59
  name?: string;
60
- }): [get: Store<T>, set: SetStoreFunction<T>];
60
+ }] : [store: object & (T | Store<T>), options?: {
61
+ name?: string;
62
+ }]): [get: Store<T>, set: SetStoreFunction<T>];
61
63
  export {};
package/types/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export { createRoot, createSignal, createEffect, createRenderEffect, createComputed, createReaction, createDeferred, createSelector, createMemo, createResource, onMount, onCleanup, onError, untrack, batch, on, enableScheduling, enableExternalSource, startTransition, useTransition, createContext, useContext, children, getListener, getOwner, runWithOwner, equalFn, $DEVCOMP, $PROXY, $TRACK } from "./reactive/signal";
2
- export type { Accessor, Setter, Signal, Resource, ResourceReturn, ResourceFetcher, ResourceFetcherInfo, Context, ReturnTypes } from "./reactive/signal";
2
+ export type { Accessor, Setter, Signal, Resource, ResourceOptions, ResourceReturn, ResourceFetcher, ResourceFetcherInfo, Context, ReturnTypes, Owner } from "./reactive/signal";
3
3
  export * from "./reactive/observable";
4
4
  export * from "./reactive/scheduler";
5
5
  export * from "./reactive/array";
@@ -11,6 +11,7 @@ export declare let Transition: TransitionState | null;
11
11
  declare let ExternalSourceFactory: ExternalSourceFactory | null;
12
12
  declare global {
13
13
  var _$afterUpdate: () => void;
14
+ var _$afterCreateRoot: (root: Owner) => void;
14
15
  }
15
16
  export interface SignalState<T> {
16
17
  value?: T;