solid-js 1.5.6 → 1.6.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 CHANGED
@@ -287,10 +287,6 @@ function createResource(pSource, pFetcher, pOptions) {
287
287
  loadedUnderTransition = false;
288
288
  runUpdates(() => {
289
289
  Transition.running = true;
290
- if (!Transition.promises.size) {
291
- Effects.push.apply(Effects, Transition.effects);
292
- Transition.effects = [];
293
- }
294
290
  completeLoad(v, error);
295
291
  }, false);
296
292
  } else completeLoad(v, error);
@@ -315,7 +311,7 @@ function createResource(pSource, pFetcher, pOptions) {
315
311
  createComputed(() => {
316
312
  track();
317
313
  if (pr) {
318
- if (c.resolved && Transition) Transition.promises.add(pr);else if (!contexts.has(c)) {
314
+ if (c.resolved && Transition && Transition.running) Transition.promises.add(pr);else if (!contexts.has(c)) {
319
315
  c.increment();
320
316
  contexts.add(c);
321
317
  }
@@ -686,7 +682,9 @@ function updateComputation(node) {
686
682
  queueMicrotask(() => {
687
683
  runUpdates(() => {
688
684
  Transition && (Transition.running = true);
685
+ Listener = Owner = node;
689
686
  runComputation(node, node.tValue, time);
687
+ Listener = Owner = null;
690
688
  }, false);
691
689
  });
692
690
  }
@@ -803,36 +801,38 @@ function completeUpdates(wait) {
803
801
  }
804
802
  if (wait) return;
805
803
  let res;
806
- if (Transition && Transition.running) {
807
- if (Transition.promises.size || Transition.queue.size) {
804
+ if (Transition) {
805
+ if (!Transition.promises.size && !Transition.queue.size) {
806
+ const sources = Transition.sources;
807
+ const disposed = Transition.disposed;
808
+ Effects.push.apply(Effects, Transition.effects);
809
+ res = Transition.resolve;
810
+ for (const e of Effects) {
811
+ "tState" in e && (e.state = e.tState);
812
+ delete e.tState;
813
+ }
814
+ Transition = null;
815
+ runUpdates(() => {
816
+ for (const d of disposed) cleanNode(d);
817
+ for (const v of sources) {
818
+ v.value = v.tValue;
819
+ if (v.owned) {
820
+ for (let i = 0, len = v.owned.length; i < len; i++) cleanNode(v.owned[i]);
821
+ }
822
+ if (v.tOwned) v.owned = v.tOwned;
823
+ delete v.tValue;
824
+ delete v.tOwned;
825
+ v.tState = 0;
826
+ }
827
+ setTransPending(false);
828
+ }, false);
829
+ } else if (Transition.running) {
808
830
  Transition.running = false;
809
831
  Transition.effects.push.apply(Transition.effects, Effects);
810
832
  Effects = null;
811
833
  setTransPending(true);
812
834
  return;
813
835
  }
814
- const sources = Transition.sources;
815
- const disposed = Transition.disposed;
816
- res = Transition.resolve;
817
- for (const e of Effects) {
818
- "tState" in e && (e.state = e.tState);
819
- delete e.tState;
820
- }
821
- Transition = null;
822
- runUpdates(() => {
823
- for (const d of disposed) cleanNode(d);
824
- for (const v of sources) {
825
- v.value = v.tValue;
826
- if (v.owned) {
827
- for (let i = 0, len = v.owned.length; i < len; i++) cleanNode(v.owned[i]);
828
- }
829
- if (v.tOwned) v.owned = v.tOwned;
830
- delete v.tValue;
831
- delete v.tOwned;
832
- v.tState = 0;
833
- }
834
- setTransPending(false);
835
- }, false);
836
836
  }
837
837
  const e = Effects;
838
838
  Effects = null;
@@ -853,10 +853,6 @@ function scheduleQueue(queue) {
853
853
  runUpdates(() => {
854
854
  Transition.running = true;
855
855
  runTop(item);
856
- if (!tasks.size) {
857
- Effects.push.apply(Effects, Transition.effects);
858
- Transition.effects = [];
859
- }
860
856
  }, false);
861
857
  Transition && (Transition.running = false);
862
858
  });
@@ -1263,29 +1259,41 @@ function resolveSource(s) {
1263
1259
  return (s = typeof s === "function" ? s() : s) == null ? {} : s;
1264
1260
  }
1265
1261
  function mergeProps(...sources) {
1266
- return new Proxy({
1267
- get(property) {
1268
- for (let i = sources.length - 1; i >= 0; i--) {
1269
- const v = resolveSource(sources[i])[property];
1270
- if (v !== undefined) return v;
1271
- }
1272
- },
1273
- has(property) {
1274
- for (let i = sources.length - 1; i >= 0; i--) {
1275
- if (property in resolveSource(sources[i])) return true;
1262
+ if (sources.some(s => s && ($PROXY in s || typeof s === "function"))) {
1263
+ return new Proxy({
1264
+ get(property) {
1265
+ for (let i = sources.length - 1; i >= 0; i--) {
1266
+ const v = resolveSource(sources[i])[property];
1267
+ if (v !== undefined) return v;
1268
+ }
1269
+ },
1270
+ has(property) {
1271
+ for (let i = sources.length - 1; i >= 0; i--) {
1272
+ if (property in resolveSource(sources[i])) return true;
1273
+ }
1274
+ return false;
1275
+ },
1276
+ keys() {
1277
+ const keys = [];
1278
+ for (let i = 0; i < sources.length; i++) keys.push(...Object.keys(resolveSource(sources[i])));
1279
+ return [...new Set(keys)];
1276
1280
  }
1277
- return false;
1278
- },
1279
- keys() {
1280
- const keys = [];
1281
- for (let i = 0; i < sources.length; i++) keys.push(...Object.keys(resolveSource(sources[i])));
1282
- return [...new Set(keys)];
1281
+ }, propTraps);
1282
+ }
1283
+ const target = {};
1284
+ for (let i = 0; i < sources.length; i++) {
1285
+ if (sources[i]) {
1286
+ const descriptors = Object.getOwnPropertyDescriptors(sources[i]);
1287
+ Object.defineProperties(target, descriptors);
1283
1288
  }
1284
- }, propTraps);
1289
+ }
1290
+ return target;
1285
1291
  }
1286
1292
  function splitProps(props, ...keys) {
1287
1293
  const blocked = new Set(keys.flat());
1288
1294
  const descriptors = Object.getOwnPropertyDescriptors(props);
1295
+ const isProxy = ($PROXY in props);
1296
+ if (!isProxy) keys.push(Object.keys(descriptors).filter(k => !blocked.has(k)));
1289
1297
  const res = keys.map(k => {
1290
1298
  const clone = {};
1291
1299
  for (let i = 0; i < k.length; i++) {
@@ -1301,17 +1309,19 @@ function splitProps(props, ...keys) {
1301
1309
  }
1302
1310
  return clone;
1303
1311
  });
1304
- res.push(new Proxy({
1305
- get(property) {
1306
- return blocked.has(property) ? undefined : props[property];
1307
- },
1308
- has(property) {
1309
- return blocked.has(property) ? false : property in props;
1310
- },
1311
- keys() {
1312
- return Object.keys(props).filter(k => !blocked.has(k));
1313
- }
1314
- }, propTraps));
1312
+ if (isProxy) {
1313
+ res.push(new Proxy({
1314
+ get(property) {
1315
+ return blocked.has(property) ? undefined : props[property];
1316
+ },
1317
+ has(property) {
1318
+ return blocked.has(property) ? false : property in props;
1319
+ },
1320
+ keys() {
1321
+ return Object.keys(props).filter(k => !blocked.has(k));
1322
+ }
1323
+ }, propTraps));
1324
+ }
1315
1325
  return res;
1316
1326
  }
1317
1327
  function lazy(fn) {
package/dist/dev.js CHANGED
@@ -283,10 +283,6 @@ function createResource(pSource, pFetcher, pOptions) {
283
283
  loadedUnderTransition = false;
284
284
  runUpdates(() => {
285
285
  Transition.running = true;
286
- if (!Transition.promises.size) {
287
- Effects.push.apply(Effects, Transition.effects);
288
- Transition.effects = [];
289
- }
290
286
  completeLoad(v, error);
291
287
  }, false);
292
288
  } else completeLoad(v, error);
@@ -311,7 +307,7 @@ function createResource(pSource, pFetcher, pOptions) {
311
307
  createComputed(() => {
312
308
  track();
313
309
  if (pr) {
314
- if (c.resolved && Transition) Transition.promises.add(pr);else if (!contexts.has(c)) {
310
+ if (c.resolved && Transition && Transition.running) Transition.promises.add(pr);else if (!contexts.has(c)) {
315
311
  c.increment();
316
312
  contexts.add(c);
317
313
  }
@@ -682,7 +678,9 @@ function updateComputation(node) {
682
678
  queueMicrotask(() => {
683
679
  runUpdates(() => {
684
680
  Transition && (Transition.running = true);
681
+ Listener = Owner = node;
685
682
  runComputation(node, node.tValue, time);
683
+ Listener = Owner = null;
686
684
  }, false);
687
685
  });
688
686
  }
@@ -799,36 +797,38 @@ function completeUpdates(wait) {
799
797
  }
800
798
  if (wait) return;
801
799
  let res;
802
- if (Transition && Transition.running) {
803
- if (Transition.promises.size || Transition.queue.size) {
800
+ if (Transition) {
801
+ if (!Transition.promises.size && !Transition.queue.size) {
802
+ const sources = Transition.sources;
803
+ const disposed = Transition.disposed;
804
+ Effects.push.apply(Effects, Transition.effects);
805
+ res = Transition.resolve;
806
+ for (const e of Effects) {
807
+ "tState" in e && (e.state = e.tState);
808
+ delete e.tState;
809
+ }
810
+ Transition = null;
811
+ runUpdates(() => {
812
+ for (const d of disposed) cleanNode(d);
813
+ for (const v of sources) {
814
+ v.value = v.tValue;
815
+ if (v.owned) {
816
+ for (let i = 0, len = v.owned.length; i < len; i++) cleanNode(v.owned[i]);
817
+ }
818
+ if (v.tOwned) v.owned = v.tOwned;
819
+ delete v.tValue;
820
+ delete v.tOwned;
821
+ v.tState = 0;
822
+ }
823
+ setTransPending(false);
824
+ }, false);
825
+ } else if (Transition.running) {
804
826
  Transition.running = false;
805
827
  Transition.effects.push.apply(Transition.effects, Effects);
806
828
  Effects = null;
807
829
  setTransPending(true);
808
830
  return;
809
831
  }
810
- const sources = Transition.sources;
811
- const disposed = Transition.disposed;
812
- res = Transition.resolve;
813
- for (const e of Effects) {
814
- "tState" in e && (e.state = e.tState);
815
- delete e.tState;
816
- }
817
- Transition = null;
818
- runUpdates(() => {
819
- for (const d of disposed) cleanNode(d);
820
- for (const v of sources) {
821
- v.value = v.tValue;
822
- if (v.owned) {
823
- for (let i = 0, len = v.owned.length; i < len; i++) cleanNode(v.owned[i]);
824
- }
825
- if (v.tOwned) v.owned = v.tOwned;
826
- delete v.tValue;
827
- delete v.tOwned;
828
- v.tState = 0;
829
- }
830
- setTransPending(false);
831
- }, false);
832
832
  }
833
833
  const e = Effects;
834
834
  Effects = null;
@@ -849,10 +849,6 @@ function scheduleQueue(queue) {
849
849
  runUpdates(() => {
850
850
  Transition.running = true;
851
851
  runTop(item);
852
- if (!tasks.size) {
853
- Effects.push.apply(Effects, Transition.effects);
854
- Transition.effects = [];
855
- }
856
852
  }, false);
857
853
  Transition && (Transition.running = false);
858
854
  });
@@ -1259,29 +1255,41 @@ function resolveSource(s) {
1259
1255
  return (s = typeof s === "function" ? s() : s) == null ? {} : s;
1260
1256
  }
1261
1257
  function mergeProps(...sources) {
1262
- return new Proxy({
1263
- get(property) {
1264
- for (let i = sources.length - 1; i >= 0; i--) {
1265
- const v = resolveSource(sources[i])[property];
1266
- if (v !== undefined) return v;
1267
- }
1268
- },
1269
- has(property) {
1270
- for (let i = sources.length - 1; i >= 0; i--) {
1271
- if (property in resolveSource(sources[i])) return true;
1258
+ if (sources.some(s => s && ($PROXY in s || typeof s === "function"))) {
1259
+ return new Proxy({
1260
+ get(property) {
1261
+ for (let i = sources.length - 1; i >= 0; i--) {
1262
+ const v = resolveSource(sources[i])[property];
1263
+ if (v !== undefined) return v;
1264
+ }
1265
+ },
1266
+ has(property) {
1267
+ for (let i = sources.length - 1; i >= 0; i--) {
1268
+ if (property in resolveSource(sources[i])) return true;
1269
+ }
1270
+ return false;
1271
+ },
1272
+ keys() {
1273
+ const keys = [];
1274
+ for (let i = 0; i < sources.length; i++) keys.push(...Object.keys(resolveSource(sources[i])));
1275
+ return [...new Set(keys)];
1272
1276
  }
1273
- return false;
1274
- },
1275
- keys() {
1276
- const keys = [];
1277
- for (let i = 0; i < sources.length; i++) keys.push(...Object.keys(resolveSource(sources[i])));
1278
- return [...new Set(keys)];
1277
+ }, propTraps);
1278
+ }
1279
+ const target = {};
1280
+ for (let i = 0; i < sources.length; i++) {
1281
+ if (sources[i]) {
1282
+ const descriptors = Object.getOwnPropertyDescriptors(sources[i]);
1283
+ Object.defineProperties(target, descriptors);
1279
1284
  }
1280
- }, propTraps);
1285
+ }
1286
+ return target;
1281
1287
  }
1282
1288
  function splitProps(props, ...keys) {
1283
1289
  const blocked = new Set(keys.flat());
1284
1290
  const descriptors = Object.getOwnPropertyDescriptors(props);
1291
+ const isProxy = ($PROXY in props);
1292
+ if (!isProxy) keys.push(Object.keys(descriptors).filter(k => !blocked.has(k)));
1285
1293
  const res = keys.map(k => {
1286
1294
  const clone = {};
1287
1295
  for (let i = 0; i < k.length; i++) {
@@ -1297,17 +1305,19 @@ function splitProps(props, ...keys) {
1297
1305
  }
1298
1306
  return clone;
1299
1307
  });
1300
- res.push(new Proxy({
1301
- get(property) {
1302
- return blocked.has(property) ? undefined : props[property];
1303
- },
1304
- has(property) {
1305
- return blocked.has(property) ? false : property in props;
1306
- },
1307
- keys() {
1308
- return Object.keys(props).filter(k => !blocked.has(k));
1309
- }
1310
- }, propTraps));
1308
+ if (isProxy) {
1309
+ res.push(new Proxy({
1310
+ get(property) {
1311
+ return blocked.has(property) ? undefined : props[property];
1312
+ },
1313
+ has(property) {
1314
+ return blocked.has(property) ? false : property in props;
1315
+ },
1316
+ keys() {
1317
+ return Object.keys(props).filter(k => !blocked.has(k));
1318
+ }
1319
+ }, propTraps));
1320
+ }
1311
1321
  return res;
1312
1322
  }
1313
1323
  function lazy(fn) {
package/dist/solid.cjs CHANGED
@@ -279,10 +279,6 @@ function createResource(pSource, pFetcher, pOptions) {
279
279
  loadedUnderTransition = false;
280
280
  runUpdates(() => {
281
281
  Transition.running = true;
282
- if (!Transition.promises.size) {
283
- Effects.push.apply(Effects, Transition.effects);
284
- Transition.effects = [];
285
- }
286
282
  completeLoad(v, error);
287
283
  }, false);
288
284
  } else completeLoad(v, error);
@@ -307,7 +303,7 @@ function createResource(pSource, pFetcher, pOptions) {
307
303
  createComputed(() => {
308
304
  track();
309
305
  if (pr) {
310
- if (c.resolved && Transition) Transition.promises.add(pr);else if (!contexts.has(c)) {
306
+ if (c.resolved && Transition && Transition.running) Transition.promises.add(pr);else if (!contexts.has(c)) {
311
307
  c.increment();
312
308
  contexts.add(c);
313
309
  }
@@ -625,7 +621,9 @@ function updateComputation(node) {
625
621
  queueMicrotask(() => {
626
622
  runUpdates(() => {
627
623
  Transition && (Transition.running = true);
624
+ Listener = Owner = node;
628
625
  runComputation(node, node.tValue, time);
626
+ Listener = Owner = null;
629
627
  }, false);
630
628
  });
631
629
  }
@@ -741,36 +739,38 @@ function completeUpdates(wait) {
741
739
  }
742
740
  if (wait) return;
743
741
  let res;
744
- if (Transition && Transition.running) {
745
- if (Transition.promises.size || Transition.queue.size) {
742
+ if (Transition) {
743
+ if (!Transition.promises.size && !Transition.queue.size) {
744
+ const sources = Transition.sources;
745
+ const disposed = Transition.disposed;
746
+ Effects.push.apply(Effects, Transition.effects);
747
+ res = Transition.resolve;
748
+ for (const e of Effects) {
749
+ "tState" in e && (e.state = e.tState);
750
+ delete e.tState;
751
+ }
752
+ Transition = null;
753
+ runUpdates(() => {
754
+ for (const d of disposed) cleanNode(d);
755
+ for (const v of sources) {
756
+ v.value = v.tValue;
757
+ if (v.owned) {
758
+ for (let i = 0, len = v.owned.length; i < len; i++) cleanNode(v.owned[i]);
759
+ }
760
+ if (v.tOwned) v.owned = v.tOwned;
761
+ delete v.tValue;
762
+ delete v.tOwned;
763
+ v.tState = 0;
764
+ }
765
+ setTransPending(false);
766
+ }, false);
767
+ } else if (Transition.running) {
746
768
  Transition.running = false;
747
769
  Transition.effects.push.apply(Transition.effects, Effects);
748
770
  Effects = null;
749
771
  setTransPending(true);
750
772
  return;
751
773
  }
752
- const sources = Transition.sources;
753
- const disposed = Transition.disposed;
754
- res = Transition.resolve;
755
- for (const e of Effects) {
756
- "tState" in e && (e.state = e.tState);
757
- delete e.tState;
758
- }
759
- Transition = null;
760
- runUpdates(() => {
761
- for (const d of disposed) cleanNode(d);
762
- for (const v of sources) {
763
- v.value = v.tValue;
764
- if (v.owned) {
765
- for (let i = 0, len = v.owned.length; i < len; i++) cleanNode(v.owned[i]);
766
- }
767
- if (v.tOwned) v.owned = v.tOwned;
768
- delete v.tValue;
769
- delete v.tOwned;
770
- v.tState = 0;
771
- }
772
- setTransPending(false);
773
- }, false);
774
774
  }
775
775
  const e = Effects;
776
776
  Effects = null;
@@ -791,10 +791,6 @@ function scheduleQueue(queue) {
791
791
  runUpdates(() => {
792
792
  Transition.running = true;
793
793
  runTop(item);
794
- if (!tasks.size) {
795
- Effects.push.apply(Effects, Transition.effects);
796
- Transition.effects = [];
797
- }
798
794
  }, false);
799
795
  Transition && (Transition.running = false);
800
796
  });
@@ -1177,29 +1173,41 @@ function resolveSource(s) {
1177
1173
  return (s = typeof s === "function" ? s() : s) == null ? {} : s;
1178
1174
  }
1179
1175
  function mergeProps(...sources) {
1180
- return new Proxy({
1181
- get(property) {
1182
- for (let i = sources.length - 1; i >= 0; i--) {
1183
- const v = resolveSource(sources[i])[property];
1184
- if (v !== undefined) return v;
1185
- }
1186
- },
1187
- has(property) {
1188
- for (let i = sources.length - 1; i >= 0; i--) {
1189
- if (property in resolveSource(sources[i])) return true;
1176
+ if (sources.some(s => s && ($PROXY in s || typeof s === "function"))) {
1177
+ return new Proxy({
1178
+ get(property) {
1179
+ for (let i = sources.length - 1; i >= 0; i--) {
1180
+ const v = resolveSource(sources[i])[property];
1181
+ if (v !== undefined) return v;
1182
+ }
1183
+ },
1184
+ has(property) {
1185
+ for (let i = sources.length - 1; i >= 0; i--) {
1186
+ if (property in resolveSource(sources[i])) return true;
1187
+ }
1188
+ return false;
1189
+ },
1190
+ keys() {
1191
+ const keys = [];
1192
+ for (let i = 0; i < sources.length; i++) keys.push(...Object.keys(resolveSource(sources[i])));
1193
+ return [...new Set(keys)];
1190
1194
  }
1191
- return false;
1192
- },
1193
- keys() {
1194
- const keys = [];
1195
- for (let i = 0; i < sources.length; i++) keys.push(...Object.keys(resolveSource(sources[i])));
1196
- return [...new Set(keys)];
1195
+ }, propTraps);
1196
+ }
1197
+ const target = {};
1198
+ for (let i = 0; i < sources.length; i++) {
1199
+ if (sources[i]) {
1200
+ const descriptors = Object.getOwnPropertyDescriptors(sources[i]);
1201
+ Object.defineProperties(target, descriptors);
1197
1202
  }
1198
- }, propTraps);
1203
+ }
1204
+ return target;
1199
1205
  }
1200
1206
  function splitProps(props, ...keys) {
1201
1207
  const blocked = new Set(keys.flat());
1202
1208
  const descriptors = Object.getOwnPropertyDescriptors(props);
1209
+ const isProxy = ($PROXY in props);
1210
+ if (!isProxy) keys.push(Object.keys(descriptors).filter(k => !blocked.has(k)));
1203
1211
  const res = keys.map(k => {
1204
1212
  const clone = {};
1205
1213
  for (let i = 0; i < k.length; i++) {
@@ -1215,17 +1223,19 @@ function splitProps(props, ...keys) {
1215
1223
  }
1216
1224
  return clone;
1217
1225
  });
1218
- res.push(new Proxy({
1219
- get(property) {
1220
- return blocked.has(property) ? undefined : props[property];
1221
- },
1222
- has(property) {
1223
- return blocked.has(property) ? false : property in props;
1224
- },
1225
- keys() {
1226
- return Object.keys(props).filter(k => !blocked.has(k));
1227
- }
1228
- }, propTraps));
1226
+ if (isProxy) {
1227
+ res.push(new Proxy({
1228
+ get(property) {
1229
+ return blocked.has(property) ? undefined : props[property];
1230
+ },
1231
+ has(property) {
1232
+ return blocked.has(property) ? false : property in props;
1233
+ },
1234
+ keys() {
1235
+ return Object.keys(props).filter(k => !blocked.has(k));
1236
+ }
1237
+ }, propTraps));
1238
+ }
1229
1239
  return res;
1230
1240
  }
1231
1241
  function lazy(fn) {