solid-js 1.7.5 → 1.7.7

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,7 +287,7 @@ function createResource(pSource, pFetcher, pOptions) {
287
287
  function loadEnd(p, v, error, key) {
288
288
  if (pr === p) {
289
289
  pr = null;
290
- resolved = true;
290
+ key !== undefined && (resolved = true);
291
291
  if ((p === initP || v === initP) && options.onHydrated) queueMicrotask(() => options.onHydrated(key, {
292
292
  value: v
293
293
  }));
@@ -306,7 +306,7 @@ function createResource(pSource, pFetcher, pOptions) {
306
306
  function completeLoad(v, err) {
307
307
  runUpdates(() => {
308
308
  if (err === undefined) setValue(() => v);
309
- setState(err !== undefined ? "errored" : "ready");
309
+ setState(err !== undefined ? "errored" : resolved ? "ready" : "unresolved");
310
310
  setError(err);
311
311
  for (const c of contexts.keys()) c.decrement();
312
312
  contexts.clear();
@@ -958,19 +958,26 @@ function castError(err) {
958
958
  cause: err
959
959
  });
960
960
  }
961
- function runErrors(fns, err) {
962
- for (const f of fns) f(err);
963
- }
964
- function handleError(err) {
965
- const fns = ERROR && lookup(Owner, ERROR);
966
- if (!fns) throw err;
961
+ function handleError(err, owner = Owner) {
962
+ const fns = ERROR && lookup(owner, ERROR);
967
963
  const error = castError(err);
964
+ if (!fns) throw error;
968
965
  if (Effects) Effects.push({
969
966
  fn() {
970
- runErrors(fns, error);
967
+ try {
968
+ for (const f of fns) f(error);
969
+ } catch (e) {
970
+ handleError(e, owner?.owner || null);
971
+ }
971
972
  },
972
973
  state: STALE
973
- });else runErrors(fns, error);
974
+ });else {
975
+ try {
976
+ for (const f of fns) f(error);
977
+ } catch (e) {
978
+ handleError(e, owner?.owner || null);
979
+ }
980
+ }
974
981
  }
975
982
  function lookup(owner, key) {
976
983
  return owner ? owner.context && owner.context[key] !== undefined ? owner.context[key] : lookup(owner.owner, key) : undefined;
@@ -1265,6 +1272,12 @@ const propTraps = {
1265
1272
  function resolveSource(s) {
1266
1273
  return !(s = typeof s === "function" ? s() : s) ? {} : s;
1267
1274
  }
1275
+ function resolveSources() {
1276
+ for (let i = 0, length = this.length; i < length; ++i) {
1277
+ const v = this[i]();
1278
+ if (v !== undefined) return v;
1279
+ }
1280
+ }
1268
1281
  function mergeProps(...sources) {
1269
1282
  let proxy = false;
1270
1283
  for (let i = 0; i < sources.length; i++) {
@@ -1294,28 +1307,45 @@ function mergeProps(...sources) {
1294
1307
  }, propTraps);
1295
1308
  }
1296
1309
  const target = {};
1310
+ const sourcesMap = {};
1311
+ const defined = new Set();
1297
1312
  for (let i = sources.length - 1; i >= 0; i--) {
1298
- if (sources[i]) {
1299
- const descriptors = Object.getOwnPropertyDescriptors(sources[i]);
1300
- for (const key in descriptors) {
1301
- if (key in target) continue;
1302
- Object.defineProperty(target, key, {
1303
- enumerable: true,
1304
- get() {
1305
- for (let i = sources.length - 1; i >= 0; i--) {
1306
- const v = (sources[i] || {})[key];
1307
- if (v !== undefined) return v;
1308
- }
1313
+ const source = sources[i];
1314
+ if (!source) continue;
1315
+ const sourceKeys = Object.getOwnPropertyNames(source);
1316
+ for (let i = 0, length = sourceKeys.length; i < length; i++) {
1317
+ const key = sourceKeys[i];
1318
+ if (key === "__proto__" || key === "constructor") continue;
1319
+ const desc = Object.getOwnPropertyDescriptor(source, key);
1320
+ if (!defined.has(key)) {
1321
+ if (desc.get) {
1322
+ defined.add(key);
1323
+ Object.defineProperty(target, key, {
1324
+ enumerable: true,
1325
+ configurable: true,
1326
+ get: resolveSources.bind(sourcesMap[key] = [desc.get.bind(source)])
1327
+ });
1328
+ } else {
1329
+ if (desc.value !== undefined) defined.add(key);
1330
+ target[key] = desc.value;
1331
+ }
1332
+ } else {
1333
+ const sources = sourcesMap[key];
1334
+ if (sources) {
1335
+ if (desc.get) {
1336
+ sources.push(desc.get.bind(source));
1337
+ } else if (desc.value !== undefined) {
1338
+ sources.push(() => desc.value);
1309
1339
  }
1310
- });
1340
+ } else if (target[key] === undefined) target[key] = desc.value;
1311
1341
  }
1312
1342
  }
1313
1343
  }
1314
1344
  return target;
1315
1345
  }
1316
1346
  function splitProps(props, ...keys) {
1317
- const blocked = new Set(keys.length > 1 ? keys.flat() : keys[0]);
1318
1347
  if ($PROXY in props) {
1348
+ const blocked = new Set(keys.length > 1 ? keys.flat() : keys[0]);
1319
1349
  const res = keys.map(k => {
1320
1350
  return new Proxy({
1321
1351
  get(property) {
@@ -1342,25 +1372,25 @@ function splitProps(props, ...keys) {
1342
1372
  }, propTraps));
1343
1373
  return res;
1344
1374
  }
1345
- const descriptors = Object.getOwnPropertyDescriptors(props);
1346
- keys.push(Object.keys(descriptors).filter(k => !blocked.has(k)));
1347
- return keys.map(k => {
1348
- const clone = {};
1349
- for (let i = 0; i < k.length; i++) {
1350
- const key = k[i];
1351
- if (!(key in props)) continue;
1352
- Object.defineProperty(clone, key, descriptors[key] ? descriptors[key] : {
1353
- get() {
1354
- return props[key];
1355
- },
1356
- set() {
1357
- return true;
1358
- },
1359
- enumerable: true
1360
- });
1375
+ const otherObject = {};
1376
+ const objects = keys.map(() => ({}));
1377
+ for (const propName of Object.getOwnPropertyNames(props)) {
1378
+ const desc = Object.getOwnPropertyDescriptor(props, propName);
1379
+ const isDefaultDesc = !desc.get && !desc.set && desc.enumerable && desc.writable && desc.configurable;
1380
+ let blocked = false;
1381
+ let objectIndex = 0;
1382
+ for (const k of keys) {
1383
+ if (k.includes(propName)) {
1384
+ blocked = true;
1385
+ isDefaultDesc ? objects[objectIndex][propName] = desc.value : Object.defineProperty(objects[objectIndex], propName, desc);
1386
+ }
1387
+ ++objectIndex;
1361
1388
  }
1362
- return clone;
1363
- });
1389
+ if (!blocked) {
1390
+ isDefaultDesc ? otherObject[propName] = desc.value : Object.defineProperty(otherObject, propName, desc);
1391
+ }
1392
+ }
1393
+ return [...objects, otherObject];
1364
1394
  }
1365
1395
  function lazy(fn) {
1366
1396
  let comp;
package/dist/dev.js CHANGED
@@ -285,7 +285,7 @@ function createResource(pSource, pFetcher, pOptions) {
285
285
  function loadEnd(p, v, error, key) {
286
286
  if (pr === p) {
287
287
  pr = null;
288
- resolved = true;
288
+ key !== undefined && (resolved = true);
289
289
  if ((p === initP || v === initP) && options.onHydrated) queueMicrotask(() => options.onHydrated(key, {
290
290
  value: v
291
291
  }));
@@ -304,7 +304,7 @@ function createResource(pSource, pFetcher, pOptions) {
304
304
  function completeLoad(v, err) {
305
305
  runUpdates(() => {
306
306
  if (err === undefined) setValue(() => v);
307
- setState(err !== undefined ? "errored" : "ready");
307
+ setState(err !== undefined ? "errored" : resolved ? "ready" : "unresolved");
308
308
  setError(err);
309
309
  for (const c of contexts.keys()) c.decrement();
310
310
  contexts.clear();
@@ -956,19 +956,26 @@ function castError(err) {
956
956
  cause: err
957
957
  });
958
958
  }
959
- function runErrors(fns, err) {
960
- for (const f of fns) f(err);
961
- }
962
- function handleError(err) {
963
- const fns = ERROR && lookup(Owner, ERROR);
964
- if (!fns) throw err;
959
+ function handleError(err, owner = Owner) {
960
+ const fns = ERROR && lookup(owner, ERROR);
965
961
  const error = castError(err);
962
+ if (!fns) throw error;
966
963
  if (Effects) Effects.push({
967
964
  fn() {
968
- runErrors(fns, error);
965
+ try {
966
+ for (const f of fns) f(error);
967
+ } catch (e) {
968
+ handleError(e, owner?.owner || null);
969
+ }
969
970
  },
970
971
  state: STALE
971
- });else runErrors(fns, error);
972
+ });else {
973
+ try {
974
+ for (const f of fns) f(error);
975
+ } catch (e) {
976
+ handleError(e, owner?.owner || null);
977
+ }
978
+ }
972
979
  }
973
980
  function lookup(owner, key) {
974
981
  return owner ? owner.context && owner.context[key] !== undefined ? owner.context[key] : lookup(owner.owner, key) : undefined;
@@ -1263,6 +1270,12 @@ const propTraps = {
1263
1270
  function resolveSource(s) {
1264
1271
  return !(s = typeof s === "function" ? s() : s) ? {} : s;
1265
1272
  }
1273
+ function resolveSources() {
1274
+ for (let i = 0, length = this.length; i < length; ++i) {
1275
+ const v = this[i]();
1276
+ if (v !== undefined) return v;
1277
+ }
1278
+ }
1266
1279
  function mergeProps(...sources) {
1267
1280
  let proxy = false;
1268
1281
  for (let i = 0; i < sources.length; i++) {
@@ -1292,28 +1305,45 @@ function mergeProps(...sources) {
1292
1305
  }, propTraps);
1293
1306
  }
1294
1307
  const target = {};
1308
+ const sourcesMap = {};
1309
+ const defined = new Set();
1295
1310
  for (let i = sources.length - 1; i >= 0; i--) {
1296
- if (sources[i]) {
1297
- const descriptors = Object.getOwnPropertyDescriptors(sources[i]);
1298
- for (const key in descriptors) {
1299
- if (key in target) continue;
1300
- Object.defineProperty(target, key, {
1301
- enumerable: true,
1302
- get() {
1303
- for (let i = sources.length - 1; i >= 0; i--) {
1304
- const v = (sources[i] || {})[key];
1305
- if (v !== undefined) return v;
1306
- }
1311
+ const source = sources[i];
1312
+ if (!source) continue;
1313
+ const sourceKeys = Object.getOwnPropertyNames(source);
1314
+ for (let i = 0, length = sourceKeys.length; i < length; i++) {
1315
+ const key = sourceKeys[i];
1316
+ if (key === "__proto__" || key === "constructor") continue;
1317
+ const desc = Object.getOwnPropertyDescriptor(source, key);
1318
+ if (!defined.has(key)) {
1319
+ if (desc.get) {
1320
+ defined.add(key);
1321
+ Object.defineProperty(target, key, {
1322
+ enumerable: true,
1323
+ configurable: true,
1324
+ get: resolveSources.bind(sourcesMap[key] = [desc.get.bind(source)])
1325
+ });
1326
+ } else {
1327
+ if (desc.value !== undefined) defined.add(key);
1328
+ target[key] = desc.value;
1329
+ }
1330
+ } else {
1331
+ const sources = sourcesMap[key];
1332
+ if (sources) {
1333
+ if (desc.get) {
1334
+ sources.push(desc.get.bind(source));
1335
+ } else if (desc.value !== undefined) {
1336
+ sources.push(() => desc.value);
1307
1337
  }
1308
- });
1338
+ } else if (target[key] === undefined) target[key] = desc.value;
1309
1339
  }
1310
1340
  }
1311
1341
  }
1312
1342
  return target;
1313
1343
  }
1314
1344
  function splitProps(props, ...keys) {
1315
- const blocked = new Set(keys.length > 1 ? keys.flat() : keys[0]);
1316
1345
  if ($PROXY in props) {
1346
+ const blocked = new Set(keys.length > 1 ? keys.flat() : keys[0]);
1317
1347
  const res = keys.map(k => {
1318
1348
  return new Proxy({
1319
1349
  get(property) {
@@ -1340,25 +1370,25 @@ function splitProps(props, ...keys) {
1340
1370
  }, propTraps));
1341
1371
  return res;
1342
1372
  }
1343
- const descriptors = Object.getOwnPropertyDescriptors(props);
1344
- keys.push(Object.keys(descriptors).filter(k => !blocked.has(k)));
1345
- return keys.map(k => {
1346
- const clone = {};
1347
- for (let i = 0; i < k.length; i++) {
1348
- const key = k[i];
1349
- if (!(key in props)) continue;
1350
- Object.defineProperty(clone, key, descriptors[key] ? descriptors[key] : {
1351
- get() {
1352
- return props[key];
1353
- },
1354
- set() {
1355
- return true;
1356
- },
1357
- enumerable: true
1358
- });
1373
+ const otherObject = {};
1374
+ const objects = keys.map(() => ({}));
1375
+ for (const propName of Object.getOwnPropertyNames(props)) {
1376
+ const desc = Object.getOwnPropertyDescriptor(props, propName);
1377
+ const isDefaultDesc = !desc.get && !desc.set && desc.enumerable && desc.writable && desc.configurable;
1378
+ let blocked = false;
1379
+ let objectIndex = 0;
1380
+ for (const k of keys) {
1381
+ if (k.includes(propName)) {
1382
+ blocked = true;
1383
+ isDefaultDesc ? objects[objectIndex][propName] = desc.value : Object.defineProperty(objects[objectIndex], propName, desc);
1384
+ }
1385
+ ++objectIndex;
1359
1386
  }
1360
- return clone;
1361
- });
1387
+ if (!blocked) {
1388
+ isDefaultDesc ? otherObject[propName] = desc.value : Object.defineProperty(otherObject, propName, desc);
1389
+ }
1390
+ }
1391
+ return [...objects, otherObject];
1362
1392
  }
1363
1393
  function lazy(fn) {
1364
1394
  let comp;
package/dist/server.cjs CHANGED
@@ -12,11 +12,15 @@ function castError(err) {
12
12
  cause: err
13
13
  });
14
14
  }
15
- function handleError(err) {
15
+ function handleError(err, owner = Owner) {
16
+ const fns = lookup(owner, ERROR);
16
17
  const error = castError(err);
17
- const fns = lookup(Owner, ERROR);
18
18
  if (!fns) throw error;
19
- for (const f of fns) f(error);
19
+ try {
20
+ for (const f of fns) f(error);
21
+ } catch (e) {
22
+ handleError(e, owner?.owner || null);
23
+ }
20
24
  }
21
25
  const UNOWNED = {
22
26
  context: null,
package/dist/server.js CHANGED
@@ -10,11 +10,15 @@ function castError(err) {
10
10
  cause: err
11
11
  });
12
12
  }
13
- function handleError(err) {
13
+ function handleError(err, owner = Owner) {
14
+ const fns = lookup(owner, ERROR);
14
15
  const error = castError(err);
15
- const fns = lookup(Owner, ERROR);
16
16
  if (!fns) throw error;
17
- for (const f of fns) f(error);
17
+ try {
18
+ for (const f of fns) f(error);
19
+ } catch (e) {
20
+ handleError(e, owner?.owner || null);
21
+ }
18
22
  }
19
23
  const UNOWNED = {
20
24
  context: null,
package/dist/solid.cjs CHANGED
@@ -271,7 +271,7 @@ function createResource(pSource, pFetcher, pOptions) {
271
271
  function loadEnd(p, v, error, key) {
272
272
  if (pr === p) {
273
273
  pr = null;
274
- resolved = true;
274
+ key !== undefined && (resolved = true);
275
275
  if ((p === initP || v === initP) && options.onHydrated) queueMicrotask(() => options.onHydrated(key, {
276
276
  value: v
277
277
  }));
@@ -290,7 +290,7 @@ function createResource(pSource, pFetcher, pOptions) {
290
290
  function completeLoad(v, err) {
291
291
  runUpdates(() => {
292
292
  if (err === undefined) setValue(() => v);
293
- setState(err !== undefined ? "errored" : "ready");
293
+ setState(err !== undefined ? "errored" : resolved ? "ready" : "unresolved");
294
294
  setError(err);
295
295
  for (const c of contexts.keys()) c.decrement();
296
296
  contexts.clear();
@@ -917,19 +917,26 @@ function castError(err) {
917
917
  cause: err
918
918
  });
919
919
  }
920
- function runErrors(fns, err) {
921
- for (const f of fns) f(err);
922
- }
923
- function handleError(err) {
924
- const fns = ERROR && lookup(Owner, ERROR);
925
- if (!fns) throw err;
920
+ function handleError(err, owner = Owner) {
921
+ const fns = ERROR && lookup(owner, ERROR);
926
922
  const error = castError(err);
923
+ if (!fns) throw error;
927
924
  if (Effects) Effects.push({
928
925
  fn() {
929
- runErrors(fns, error);
926
+ try {
927
+ for (const f of fns) f(error);
928
+ } catch (e) {
929
+ handleError(e, owner?.owner || null);
930
+ }
930
931
  },
931
932
  state: STALE
932
- });else runErrors(fns, error);
933
+ });else {
934
+ try {
935
+ for (const f of fns) f(error);
936
+ } catch (e) {
937
+ handleError(e, owner?.owner || null);
938
+ }
939
+ }
933
940
  }
934
941
  function lookup(owner, key) {
935
942
  return owner ? owner.context && owner.context[key] !== undefined ? owner.context[key] : lookup(owner.owner, key) : undefined;
@@ -1220,6 +1227,12 @@ const propTraps = {
1220
1227
  function resolveSource(s) {
1221
1228
  return !(s = typeof s === "function" ? s() : s) ? {} : s;
1222
1229
  }
1230
+ function resolveSources() {
1231
+ for (let i = 0, length = this.length; i < length; ++i) {
1232
+ const v = this[i]();
1233
+ if (v !== undefined) return v;
1234
+ }
1235
+ }
1223
1236
  function mergeProps(...sources) {
1224
1237
  let proxy = false;
1225
1238
  for (let i = 0; i < sources.length; i++) {
@@ -1249,28 +1262,45 @@ function mergeProps(...sources) {
1249
1262
  }, propTraps);
1250
1263
  }
1251
1264
  const target = {};
1265
+ const sourcesMap = {};
1266
+ const defined = new Set();
1252
1267
  for (let i = sources.length - 1; i >= 0; i--) {
1253
- if (sources[i]) {
1254
- const descriptors = Object.getOwnPropertyDescriptors(sources[i]);
1255
- for (const key in descriptors) {
1256
- if (key in target) continue;
1257
- Object.defineProperty(target, key, {
1258
- enumerable: true,
1259
- get() {
1260
- for (let i = sources.length - 1; i >= 0; i--) {
1261
- const v = (sources[i] || {})[key];
1262
- if (v !== undefined) return v;
1263
- }
1268
+ const source = sources[i];
1269
+ if (!source) continue;
1270
+ const sourceKeys = Object.getOwnPropertyNames(source);
1271
+ for (let i = 0, length = sourceKeys.length; i < length; i++) {
1272
+ const key = sourceKeys[i];
1273
+ if (key === "__proto__" || key === "constructor") continue;
1274
+ const desc = Object.getOwnPropertyDescriptor(source, key);
1275
+ if (!defined.has(key)) {
1276
+ if (desc.get) {
1277
+ defined.add(key);
1278
+ Object.defineProperty(target, key, {
1279
+ enumerable: true,
1280
+ configurable: true,
1281
+ get: resolveSources.bind(sourcesMap[key] = [desc.get.bind(source)])
1282
+ });
1283
+ } else {
1284
+ if (desc.value !== undefined) defined.add(key);
1285
+ target[key] = desc.value;
1286
+ }
1287
+ } else {
1288
+ const sources = sourcesMap[key];
1289
+ if (sources) {
1290
+ if (desc.get) {
1291
+ sources.push(desc.get.bind(source));
1292
+ } else if (desc.value !== undefined) {
1293
+ sources.push(() => desc.value);
1264
1294
  }
1265
- });
1295
+ } else if (target[key] === undefined) target[key] = desc.value;
1266
1296
  }
1267
1297
  }
1268
1298
  }
1269
1299
  return target;
1270
1300
  }
1271
1301
  function splitProps(props, ...keys) {
1272
- const blocked = new Set(keys.length > 1 ? keys.flat() : keys[0]);
1273
1302
  if ($PROXY in props) {
1303
+ const blocked = new Set(keys.length > 1 ? keys.flat() : keys[0]);
1274
1304
  const res = keys.map(k => {
1275
1305
  return new Proxy({
1276
1306
  get(property) {
@@ -1297,25 +1327,25 @@ function splitProps(props, ...keys) {
1297
1327
  }, propTraps));
1298
1328
  return res;
1299
1329
  }
1300
- const descriptors = Object.getOwnPropertyDescriptors(props);
1301
- keys.push(Object.keys(descriptors).filter(k => !blocked.has(k)));
1302
- return keys.map(k => {
1303
- const clone = {};
1304
- for (let i = 0; i < k.length; i++) {
1305
- const key = k[i];
1306
- if (!(key in props)) continue;
1307
- Object.defineProperty(clone, key, descriptors[key] ? descriptors[key] : {
1308
- get() {
1309
- return props[key];
1310
- },
1311
- set() {
1312
- return true;
1313
- },
1314
- enumerable: true
1315
- });
1330
+ const otherObject = {};
1331
+ const objects = keys.map(() => ({}));
1332
+ for (const propName of Object.getOwnPropertyNames(props)) {
1333
+ const desc = Object.getOwnPropertyDescriptor(props, propName);
1334
+ const isDefaultDesc = !desc.get && !desc.set && desc.enumerable && desc.writable && desc.configurable;
1335
+ let blocked = false;
1336
+ let objectIndex = 0;
1337
+ for (const k of keys) {
1338
+ if (k.includes(propName)) {
1339
+ blocked = true;
1340
+ isDefaultDesc ? objects[objectIndex][propName] = desc.value : Object.defineProperty(objects[objectIndex], propName, desc);
1341
+ }
1342
+ ++objectIndex;
1316
1343
  }
1317
- return clone;
1318
- });
1344
+ if (!blocked) {
1345
+ isDefaultDesc ? otherObject[propName] = desc.value : Object.defineProperty(otherObject, propName, desc);
1346
+ }
1347
+ }
1348
+ return [...objects, otherObject];
1319
1349
  }
1320
1350
  function lazy(fn) {
1321
1351
  let comp;