solid-js 1.6.0 → 1.6.2

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
@@ -296,8 +296,8 @@ function createResource(pSource, pFetcher, pOptions) {
296
296
  function completeLoad(v, err) {
297
297
  runUpdates(() => {
298
298
  if (!err) setValue(() => v);
299
- setError(err);
300
299
  setState(err ? "errored" : "ready");
300
+ setError(err);
301
301
  for (const c of contexts.keys()) c.decrement();
302
302
  contexts.clear();
303
303
  }, false);
@@ -419,12 +419,13 @@ function batch(fn) {
419
419
  return runUpdates(fn, false);
420
420
  }
421
421
  function untrack(fn) {
422
- let result,
423
- listener = Listener;
422
+ const listener = Listener;
424
423
  Listener = null;
425
- result = fn();
426
- Listener = listener;
427
- return result;
424
+ try {
425
+ return fn();
426
+ } finally {
427
+ Listener = listener;
428
+ }
428
429
  }
429
430
  function on(deps, fn, options) {
430
431
  const isArray = Array.isArray(deps);
@@ -1256,7 +1257,7 @@ const propTraps = {
1256
1257
  }
1257
1258
  };
1258
1259
  function resolveSource(s) {
1259
- return (s = typeof s === "function" ? s() : s) == null ? {} : s;
1260
+ return !(s = typeof s === "function" ? s() : s) ? {} : s;
1260
1261
  }
1261
1262
  function mergeProps(...sources) {
1262
1263
  if (sources.some(s => s && ($PROXY in s || typeof s === "function"))) {
@@ -1281,10 +1282,21 @@ function mergeProps(...sources) {
1281
1282
  }, propTraps);
1282
1283
  }
1283
1284
  const target = {};
1284
- for (let i = 0; i < sources.length; i++) {
1285
+ for (let i = sources.length - 1; i >= 0; i--) {
1285
1286
  if (sources[i]) {
1286
1287
  const descriptors = Object.getOwnPropertyDescriptors(sources[i]);
1287
- Object.defineProperties(target, descriptors);
1288
+ for (const key in descriptors) {
1289
+ if (key in target) continue;
1290
+ Object.defineProperty(target, key, {
1291
+ enumerable: true,
1292
+ get() {
1293
+ for (let i = sources.length - 1; i >= 0; i--) {
1294
+ const v = (sources[i] || {})[key];
1295
+ if (v !== undefined) return v;
1296
+ }
1297
+ }
1298
+ });
1299
+ }
1288
1300
  }
1289
1301
  }
1290
1302
  return target;
@@ -1298,13 +1310,15 @@ function splitProps(props, ...keys) {
1298
1310
  const clone = {};
1299
1311
  for (let i = 0; i < k.length; i++) {
1300
1312
  const key = k[i];
1313
+ if (!isProxy && !(key in props)) continue;
1301
1314
  Object.defineProperty(clone, key, descriptors[key] ? descriptors[key] : {
1302
1315
  get() {
1303
1316
  return props[key];
1304
1317
  },
1305
1318
  set() {
1306
1319
  return true;
1307
- }
1320
+ },
1321
+ enumerable: true
1308
1322
  });
1309
1323
  }
1310
1324
  return clone;
@@ -1346,7 +1360,7 @@ function lazy(fn) {
1346
1360
  }
1347
1361
  let Comp;
1348
1362
  return createMemo(() => (Comp = comp()) && untrack(() => {
1349
- Object.assign(Comp, {
1363
+ if ("_SOLID_DEV_") Object.assign(Comp, {
1350
1364
  [$DEVCOMP]: true
1351
1365
  });
1352
1366
  if (!ctx) return Comp(props);
package/dist/dev.js CHANGED
@@ -292,8 +292,8 @@ function createResource(pSource, pFetcher, pOptions) {
292
292
  function completeLoad(v, err) {
293
293
  runUpdates(() => {
294
294
  if (!err) setValue(() => v);
295
- setError(err);
296
295
  setState(err ? "errored" : "ready");
296
+ setError(err);
297
297
  for (const c of contexts.keys()) c.decrement();
298
298
  contexts.clear();
299
299
  }, false);
@@ -415,12 +415,13 @@ function batch(fn) {
415
415
  return runUpdates(fn, false);
416
416
  }
417
417
  function untrack(fn) {
418
- let result,
419
- listener = Listener;
418
+ const listener = Listener;
420
419
  Listener = null;
421
- result = fn();
422
- Listener = listener;
423
- return result;
420
+ try {
421
+ return fn();
422
+ } finally {
423
+ Listener = listener;
424
+ }
424
425
  }
425
426
  function on(deps, fn, options) {
426
427
  const isArray = Array.isArray(deps);
@@ -1252,7 +1253,7 @@ const propTraps = {
1252
1253
  }
1253
1254
  };
1254
1255
  function resolveSource(s) {
1255
- return (s = typeof s === "function" ? s() : s) == null ? {} : s;
1256
+ return !(s = typeof s === "function" ? s() : s) ? {} : s;
1256
1257
  }
1257
1258
  function mergeProps(...sources) {
1258
1259
  if (sources.some(s => s && ($PROXY in s || typeof s === "function"))) {
@@ -1277,10 +1278,21 @@ function mergeProps(...sources) {
1277
1278
  }, propTraps);
1278
1279
  }
1279
1280
  const target = {};
1280
- for (let i = 0; i < sources.length; i++) {
1281
+ for (let i = sources.length - 1; i >= 0; i--) {
1281
1282
  if (sources[i]) {
1282
1283
  const descriptors = Object.getOwnPropertyDescriptors(sources[i]);
1283
- Object.defineProperties(target, descriptors);
1284
+ for (const key in descriptors) {
1285
+ if (key in target) continue;
1286
+ Object.defineProperty(target, key, {
1287
+ enumerable: true,
1288
+ get() {
1289
+ for (let i = sources.length - 1; i >= 0; i--) {
1290
+ const v = (sources[i] || {})[key];
1291
+ if (v !== undefined) return v;
1292
+ }
1293
+ }
1294
+ });
1295
+ }
1284
1296
  }
1285
1297
  }
1286
1298
  return target;
@@ -1294,13 +1306,15 @@ function splitProps(props, ...keys) {
1294
1306
  const clone = {};
1295
1307
  for (let i = 0; i < k.length; i++) {
1296
1308
  const key = k[i];
1309
+ if (!isProxy && !(key in props)) continue;
1297
1310
  Object.defineProperty(clone, key, descriptors[key] ? descriptors[key] : {
1298
1311
  get() {
1299
1312
  return props[key];
1300
1313
  },
1301
1314
  set() {
1302
1315
  return true;
1303
- }
1316
+ },
1317
+ enumerable: true
1304
1318
  });
1305
1319
  }
1306
1320
  return clone;
@@ -1342,7 +1356,7 @@ function lazy(fn) {
1342
1356
  }
1343
1357
  let Comp;
1344
1358
  return createMemo(() => (Comp = comp()) && untrack(() => {
1345
- Object.assign(Comp, {
1359
+ if ("_SOLID_DEV_") Object.assign(Comp, {
1346
1360
  [$DEVCOMP]: true
1347
1361
  });
1348
1362
  if (!ctx) return Comp(props);
package/dist/solid.cjs CHANGED
@@ -288,8 +288,8 @@ function createResource(pSource, pFetcher, pOptions) {
288
288
  function completeLoad(v, err) {
289
289
  runUpdates(() => {
290
290
  if (!err) setValue(() => v);
291
- setError(err);
292
291
  setState(err ? "errored" : "ready");
292
+ setError(err);
293
293
  for (const c of contexts.keys()) c.decrement();
294
294
  contexts.clear();
295
295
  }, false);
@@ -411,12 +411,13 @@ function batch(fn) {
411
411
  return runUpdates(fn, false);
412
412
  }
413
413
  function untrack(fn) {
414
- let result,
415
- listener = Listener;
414
+ const listener = Listener;
416
415
  Listener = null;
417
- result = fn();
418
- Listener = listener;
419
- return result;
416
+ try {
417
+ return fn();
418
+ } finally {
419
+ Listener = listener;
420
+ }
420
421
  }
421
422
  function on(deps, fn, options) {
422
423
  const isArray = Array.isArray(deps);
@@ -1170,7 +1171,7 @@ const propTraps = {
1170
1171
  }
1171
1172
  };
1172
1173
  function resolveSource(s) {
1173
- return (s = typeof s === "function" ? s() : s) == null ? {} : s;
1174
+ return !(s = typeof s === "function" ? s() : s) ? {} : s;
1174
1175
  }
1175
1176
  function mergeProps(...sources) {
1176
1177
  if (sources.some(s => s && ($PROXY in s || typeof s === "function"))) {
@@ -1195,10 +1196,21 @@ function mergeProps(...sources) {
1195
1196
  }, propTraps);
1196
1197
  }
1197
1198
  const target = {};
1198
- for (let i = 0; i < sources.length; i++) {
1199
+ for (let i = sources.length - 1; i >= 0; i--) {
1199
1200
  if (sources[i]) {
1200
1201
  const descriptors = Object.getOwnPropertyDescriptors(sources[i]);
1201
- Object.defineProperties(target, descriptors);
1202
+ for (const key in descriptors) {
1203
+ if (key in target) continue;
1204
+ Object.defineProperty(target, key, {
1205
+ enumerable: true,
1206
+ get() {
1207
+ for (let i = sources.length - 1; i >= 0; i--) {
1208
+ const v = (sources[i] || {})[key];
1209
+ if (v !== undefined) return v;
1210
+ }
1211
+ }
1212
+ });
1213
+ }
1202
1214
  }
1203
1215
  }
1204
1216
  return target;
@@ -1212,13 +1224,15 @@ function splitProps(props, ...keys) {
1212
1224
  const clone = {};
1213
1225
  for (let i = 0; i < k.length; i++) {
1214
1226
  const key = k[i];
1227
+ if (!isProxy && !(key in props)) continue;
1215
1228
  Object.defineProperty(clone, key, descriptors[key] ? descriptors[key] : {
1216
1229
  get() {
1217
1230
  return props[key];
1218
1231
  },
1219
1232
  set() {
1220
1233
  return true;
1221
- }
1234
+ },
1235
+ enumerable: true
1222
1236
  });
1223
1237
  }
1224
1238
  return clone;
@@ -1260,6 +1274,7 @@ function lazy(fn) {
1260
1274
  }
1261
1275
  let Comp;
1262
1276
  return createMemo(() => (Comp = comp()) && untrack(() => {
1277
+ if (false) ;
1263
1278
  if (!ctx) return Comp(props);
1264
1279
  const c = sharedConfig.context;
1265
1280
  setHydrateContext(ctx);
package/dist/solid.js CHANGED
@@ -284,8 +284,8 @@ function createResource(pSource, pFetcher, pOptions) {
284
284
  function completeLoad(v, err) {
285
285
  runUpdates(() => {
286
286
  if (!err) setValue(() => v);
287
- setError(err);
288
287
  setState(err ? "errored" : "ready");
288
+ setError(err);
289
289
  for (const c of contexts.keys()) c.decrement();
290
290
  contexts.clear();
291
291
  }, false);
@@ -407,12 +407,13 @@ function batch(fn) {
407
407
  return runUpdates(fn, false);
408
408
  }
409
409
  function untrack(fn) {
410
- let result,
411
- listener = Listener;
410
+ const listener = Listener;
412
411
  Listener = null;
413
- result = fn();
414
- Listener = listener;
415
- return result;
412
+ try {
413
+ return fn();
414
+ } finally {
415
+ Listener = listener;
416
+ }
416
417
  }
417
418
  function on(deps, fn, options) {
418
419
  const isArray = Array.isArray(deps);
@@ -1166,7 +1167,7 @@ const propTraps = {
1166
1167
  }
1167
1168
  };
1168
1169
  function resolveSource(s) {
1169
- return (s = typeof s === "function" ? s() : s) == null ? {} : s;
1170
+ return !(s = typeof s === "function" ? s() : s) ? {} : s;
1170
1171
  }
1171
1172
  function mergeProps(...sources) {
1172
1173
  if (sources.some(s => s && ($PROXY in s || typeof s === "function"))) {
@@ -1191,10 +1192,21 @@ function mergeProps(...sources) {
1191
1192
  }, propTraps);
1192
1193
  }
1193
1194
  const target = {};
1194
- for (let i = 0; i < sources.length; i++) {
1195
+ for (let i = sources.length - 1; i >= 0; i--) {
1195
1196
  if (sources[i]) {
1196
1197
  const descriptors = Object.getOwnPropertyDescriptors(sources[i]);
1197
- Object.defineProperties(target, descriptors);
1198
+ for (const key in descriptors) {
1199
+ if (key in target) continue;
1200
+ Object.defineProperty(target, key, {
1201
+ enumerable: true,
1202
+ get() {
1203
+ for (let i = sources.length - 1; i >= 0; i--) {
1204
+ const v = (sources[i] || {})[key];
1205
+ if (v !== undefined) return v;
1206
+ }
1207
+ }
1208
+ });
1209
+ }
1198
1210
  }
1199
1211
  }
1200
1212
  return target;
@@ -1208,13 +1220,15 @@ function splitProps(props, ...keys) {
1208
1220
  const clone = {};
1209
1221
  for (let i = 0; i < k.length; i++) {
1210
1222
  const key = k[i];
1223
+ if (!isProxy && !(key in props)) continue;
1211
1224
  Object.defineProperty(clone, key, descriptors[key] ? descriptors[key] : {
1212
1225
  get() {
1213
1226
  return props[key];
1214
1227
  },
1215
1228
  set() {
1216
1229
  return true;
1217
- }
1230
+ },
1231
+ enumerable: true
1218
1232
  });
1219
1233
  }
1220
1234
  return clone;
@@ -1256,6 +1270,7 @@ function lazy(fn) {
1256
1270
  }
1257
1271
  let Comp;
1258
1272
  return createMemo(() => (Comp = comp()) && untrack(() => {
1273
+ if (false) ;
1259
1274
  if (!ctx) return Comp(props);
1260
1275
  const c = sharedConfig.context;
1261
1276
  setHydrateContext(ctx);
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.6.0",
4
+ "version": "1.6.2",
5
5
  "author": "Ryan Carniato",
6
6
  "license": "MIT",
7
7
  "homepage": "https://solidjs.com",
@@ -21,6 +21,7 @@ function wrap$1(value, name) {
21
21
  if (desc[prop].get) {
22
22
  const get = desc[prop].get.bind(p);
23
23
  Object.defineProperty(value, prop, {
24
+ enumerable: desc[prop].enumerable,
24
25
  get
25
26
  });
26
27
  }
@@ -115,8 +116,7 @@ const proxyTraps$1 = {
115
116
  },
116
117
  has(target, property) {
117
118
  if (property === $RAW || property === solidJs.$PROXY || property === solidJs.$TRACK || property === $NODE || property === "__proto__") return true;
118
- const tracked = getDataNodes(target)[property];
119
- tracked && tracked();
119
+ this.get(target, property, target);
120
120
  return property in target;
121
121
  },
122
122
  set() {
@@ -132,11 +132,10 @@ const proxyTraps$1 = {
132
132
  };
133
133
  function setProperty(state, property, value, deleting = false) {
134
134
  if (!deleting && state[property] === value) return;
135
- const prev = state[property];
136
- const len = state.length;
137
- if (value === undefined) {
138
- delete state[property];
139
- } else state[property] = value;
135
+ const prev = state[property],
136
+ len = state.length;
137
+ if (globalThis._$onStoreNodeUpdate) globalThis._$onStoreNodeUpdate(state, property, value, prev);
138
+ if (value === undefined) delete state[property];else state[property] = value;
140
139
  let nodes = getDataNodes(state),
141
140
  node;
142
141
  if (node = getDataNode(nodes, property, prev)) node.$(() => value);
@@ -260,8 +259,7 @@ const proxyTraps = {
260
259
  },
261
260
  has(target, property) {
262
261
  if (property === $RAW || property === solidJs.$PROXY || property === solidJs.$TRACK || property === $NODE || property === "__proto__") return true;
263
- const tracked = getDataNodes(target)[property];
264
- tracked && tracked();
262
+ this.get(target, property, target);
265
263
  return property in target;
266
264
  },
267
265
  set(target, property, value) {
@@ -437,7 +435,14 @@ function produce(fn) {
437
435
  };
438
436
  }
439
437
 
438
+ const DEV = {
439
+ $NAME,
440
+ $NODE,
441
+ isWrappable
442
+ } ;
443
+
440
444
  exports.$RAW = $RAW;
445
+ exports.DEV = DEV;
441
446
  exports.createMutable = createMutable;
442
447
  exports.createStore = createStore;
443
448
  exports.modifyMutable = modifyMutable;
package/store/dist/dev.js CHANGED
@@ -1,4 +1,4 @@
1
- import { DEV, $PROXY, $TRACK, getListener, batch, createSignal } from 'solid-js';
1
+ import { $PROXY, DEV as DEV$1, $TRACK, getListener, batch, createSignal } from 'solid-js';
2
2
 
3
3
  const $RAW = Symbol("store-raw"),
4
4
  $NODE = Symbol("store-node"),
@@ -17,6 +17,7 @@ function wrap$1(value, name) {
17
17
  if (desc[prop].get) {
18
18
  const get = desc[prop].get.bind(p);
19
19
  Object.defineProperty(value, prop, {
20
+ enumerable: desc[prop].enumerable,
20
21
  get
21
22
  });
22
23
  }
@@ -111,8 +112,7 @@ const proxyTraps$1 = {
111
112
  },
112
113
  has(target, property) {
113
114
  if (property === $RAW || property === $PROXY || property === $TRACK || property === $NODE || property === "__proto__") return true;
114
- const tracked = getDataNodes(target)[property];
115
- tracked && tracked();
115
+ this.get(target, property, target);
116
116
  return property in target;
117
117
  },
118
118
  set() {
@@ -128,11 +128,10 @@ const proxyTraps$1 = {
128
128
  };
129
129
  function setProperty(state, property, value, deleting = false) {
130
130
  if (!deleting && state[property] === value) return;
131
- const prev = state[property];
132
- const len = state.length;
133
- if (value === undefined) {
134
- delete state[property];
135
- } else state[property] = value;
131
+ const prev = state[property],
132
+ len = state.length;
133
+ if (globalThis._$onStoreNodeUpdate) globalThis._$onStoreNodeUpdate(state, property, value, prev);
134
+ if (value === undefined) delete state[property];else state[property] = value;
136
135
  let nodes = getDataNodes(state),
137
136
  node;
138
137
  if (node = getDataNode(nodes, property, prev)) node.$(() => value);
@@ -209,10 +208,10 @@ function createStore(...[store, options]) {
209
208
  const unwrappedStore = unwrap(store || {});
210
209
  const isArray = Array.isArray(unwrappedStore);
211
210
  if (typeof unwrappedStore !== "object" && typeof unwrappedStore !== "function") throw new Error(`Unexpected type ${typeof unwrappedStore} received when initializing 'createStore'. Expected an object.`);
212
- const wrappedStore = wrap$1(unwrappedStore, (options && options.name || DEV.hashValue(unwrappedStore)));
211
+ const wrappedStore = wrap$1(unwrappedStore, (options && options.name || DEV$1.hashValue(unwrappedStore)));
213
212
  {
214
- const name = options && options.name || DEV.hashValue(unwrappedStore);
215
- DEV.registerGraph(name, {
213
+ const name = options && options.name || DEV$1.hashValue(unwrappedStore);
214
+ DEV$1.registerGraph(name, {
216
215
  value: unwrappedStore
217
216
  });
218
217
  }
@@ -256,8 +255,7 @@ const proxyTraps = {
256
255
  },
257
256
  has(target, property) {
258
257
  if (property === $RAW || property === $PROXY || property === $TRACK || property === $NODE || property === "__proto__") return true;
259
- const tracked = getDataNodes(target)[property];
260
- tracked && tracked();
258
+ this.get(target, property, target);
261
259
  return property in target;
262
260
  },
263
261
  set(target, property, value) {
@@ -304,10 +302,10 @@ function wrap(value, name) {
304
302
  function createMutable(state, options) {
305
303
  const unwrappedStore = unwrap(state || {});
306
304
  if (typeof unwrappedStore !== "object" && typeof unwrappedStore !== "function") throw new Error(`Unexpected type ${typeof unwrappedStore} received when initializing 'createMutable'. Expected an object.`);
307
- const wrappedStore = wrap(unwrappedStore, (options && options.name || DEV.hashValue(unwrappedStore)));
305
+ const wrappedStore = wrap(unwrappedStore, (options && options.name || DEV$1.hashValue(unwrappedStore)));
308
306
  {
309
- const name = options && options.name || DEV.hashValue(unwrappedStore);
310
- DEV.registerGraph(name, {
307
+ const name = options && options.name || DEV$1.hashValue(unwrappedStore);
308
+ DEV$1.registerGraph(name, {
311
309
  value: unwrappedStore
312
310
  });
313
311
  }
@@ -433,4 +431,10 @@ function produce(fn) {
433
431
  };
434
432
  }
435
433
 
436
- export { $RAW, createMutable, createStore, modifyMutable, produce, reconcile, unwrap };
434
+ const DEV = {
435
+ $NAME,
436
+ $NODE,
437
+ isWrappable
438
+ } ;
439
+
440
+ export { $RAW, DEV, createMutable, createStore, modifyMutable, produce, reconcile, unwrap };
@@ -110,8 +110,10 @@ function produce(fn) {
110
110
  return state;
111
111
  };
112
112
  }
113
+ const DEV = undefined;
113
114
 
114
115
  exports.$RAW = $RAW;
116
+ exports.DEV = DEV;
115
117
  exports.createMutable = createMutable;
116
118
  exports.createStore = createStore;
117
119
  exports.isWrappable = isWrappable;
@@ -106,5 +106,6 @@ function produce(fn) {
106
106
  return state;
107
107
  };
108
108
  }
109
+ const DEV = undefined;
109
110
 
110
- export { $RAW, createMutable, createStore, isWrappable, produce, reconcile, setProperty, unwrap, updatePath };
111
+ export { $RAW, DEV, createMutable, createStore, isWrappable, produce, reconcile, setProperty, unwrap, updatePath };
@@ -21,6 +21,7 @@ function wrap$1(value, name) {
21
21
  if (desc[prop].get) {
22
22
  const get = desc[prop].get.bind(p);
23
23
  Object.defineProperty(value, prop, {
24
+ enumerable: desc[prop].enumerable,
24
25
  get
25
26
  });
26
27
  }
@@ -112,8 +113,7 @@ const proxyTraps$1 = {
112
113
  },
113
114
  has(target, property) {
114
115
  if (property === $RAW || property === solidJs.$PROXY || property === solidJs.$TRACK || property === $NODE || property === "__proto__") return true;
115
- const tracked = getDataNodes(target)[property];
116
- tracked && tracked();
116
+ this.get(target, property, target);
117
117
  return property in target;
118
118
  },
119
119
  set() {
@@ -127,11 +127,9 @@ const proxyTraps$1 = {
127
127
  };
128
128
  function setProperty(state, property, value, deleting = false) {
129
129
  if (!deleting && state[property] === value) return;
130
- const prev = state[property];
131
- const len = state.length;
132
- if (value === undefined) {
133
- delete state[property];
134
- } else state[property] = value;
130
+ const prev = state[property],
131
+ len = state.length;
132
+ if (value === undefined) delete state[property];else state[property] = value;
135
133
  let nodes = getDataNodes(state),
136
134
  node;
137
135
  if (node = getDataNode(nodes, property, prev)) node.$(() => value);
@@ -248,8 +246,7 @@ const proxyTraps = {
248
246
  },
249
247
  has(target, property) {
250
248
  if (property === $RAW || property === solidJs.$PROXY || property === solidJs.$TRACK || property === $NODE || property === "__proto__") return true;
251
- const tracked = getDataNodes(target)[property];
252
- tracked && tracked();
249
+ this.get(target, property, target);
253
250
  return property in target;
254
251
  },
255
252
  set(target, property, value) {
@@ -415,7 +412,10 @@ function produce(fn) {
415
412
  };
416
413
  }
417
414
 
415
+ const DEV = undefined;
416
+
418
417
  exports.$RAW = $RAW;
418
+ exports.DEV = DEV;
419
419
  exports.createMutable = createMutable;
420
420
  exports.createStore = createStore;
421
421
  exports.modifyMutable = modifyMutable;
@@ -17,6 +17,7 @@ function wrap$1(value, name) {
17
17
  if (desc[prop].get) {
18
18
  const get = desc[prop].get.bind(p);
19
19
  Object.defineProperty(value, prop, {
20
+ enumerable: desc[prop].enumerable,
20
21
  get
21
22
  });
22
23
  }
@@ -108,8 +109,7 @@ const proxyTraps$1 = {
108
109
  },
109
110
  has(target, property) {
110
111
  if (property === $RAW || property === $PROXY || property === $TRACK || property === $NODE || property === "__proto__") return true;
111
- const tracked = getDataNodes(target)[property];
112
- tracked && tracked();
112
+ this.get(target, property, target);
113
113
  return property in target;
114
114
  },
115
115
  set() {
@@ -123,11 +123,9 @@ const proxyTraps$1 = {
123
123
  };
124
124
  function setProperty(state, property, value, deleting = false) {
125
125
  if (!deleting && state[property] === value) return;
126
- const prev = state[property];
127
- const len = state.length;
128
- if (value === undefined) {
129
- delete state[property];
130
- } else state[property] = value;
126
+ const prev = state[property],
127
+ len = state.length;
128
+ if (value === undefined) delete state[property];else state[property] = value;
131
129
  let nodes = getDataNodes(state),
132
130
  node;
133
131
  if (node = getDataNode(nodes, property, prev)) node.$(() => value);
@@ -244,8 +242,7 @@ const proxyTraps = {
244
242
  },
245
243
  has(target, property) {
246
244
  if (property === $RAW || property === $PROXY || property === $TRACK || property === $NODE || property === "__proto__") return true;
247
- const tracked = getDataNodes(target)[property];
248
- tracked && tracked();
245
+ this.get(target, property, target);
249
246
  return property in target;
250
247
  },
251
248
  set(target, property, value) {
@@ -411,4 +408,6 @@ function produce(fn) {
411
408
  };
412
409
  }
413
410
 
414
- export { $RAW, createMutable, createStore, modifyMutable, produce, reconcile, unwrap };
411
+ const DEV = undefined;
412
+
413
+ export { $RAW, DEV, createMutable, createStore, modifyMutable, produce, reconcile, unwrap };
@@ -2,3 +2,9 @@ export { createStore, unwrap, $RAW } from "./store.js";
2
2
  export type { Store, SetStoreFunction, NotWrappable, SolidStore, StoreNode, StoreSetter, StorePathRange, ArrayFilterFn, Part, DeepReadonly, DeepMutable } from "./store.js";
3
3
  export * from "./mutable.js";
4
4
  export * from "./modifiers.js";
5
+ import { $NAME, $NODE, isWrappable } from "./store.js";
6
+ export declare const DEV: {
7
+ readonly $NAME: typeof $NAME;
8
+ readonly $NODE: typeof $NODE;
9
+ readonly isWrappable: typeof isWrappable;
10
+ } | undefined;
@@ -12,4 +12,5 @@ declare type ReconcileOptions = {
12
12
  };
13
13
  export declare function reconcile<T extends U, U>(value: T, options?: ReconcileOptions): (state: U) => T;
14
14
  export declare function produce<T>(fn: (state: T) => void): (state: T) => T;
15
+ export declare const DEV: undefined;
15
16
  export {};
@@ -1,5 +1,18 @@
1
1
  export declare const $RAW: unique symbol, $NODE: unique symbol, $NAME: unique symbol;
2
- export declare type StoreNode = Record<PropertyKey, any>;
2
+ declare global {
3
+ var _$onStoreNodeUpdate: OnStoreNodeUpdate | undefined;
4
+ }
5
+ declare type DataNode = {
6
+ (): any;
7
+ $(value?: any): void;
8
+ };
9
+ declare type DataNodes = Record<PropertyKey, DataNode>;
10
+ export declare type OnStoreNodeUpdate = (state: StoreNode, property: PropertyKey, value: StoreNode | NotWrappable, prev: StoreNode | NotWrappable) => void;
11
+ export interface StoreNode {
12
+ [$NAME]?: string;
13
+ [$NODE]?: DataNodes;
14
+ [key: PropertyKey]: any;
15
+ }
3
16
  export declare namespace SolidStore {
4
17
  interface Unwrappable {
5
18
  }
@@ -7,9 +20,20 @@ export declare namespace SolidStore {
7
20
  export declare type NotWrappable = string | number | bigint | symbol | boolean | Function | null | undefined | SolidStore.Unwrappable[keyof SolidStore.Unwrappable];
8
21
  export declare type Store<T> = T;
9
22
  export declare function isWrappable<T>(obj: T | NotWrappable): obj is T;
23
+ /**
24
+ * Returns the underlying data in the store without a proxy.
25
+ * @param item store proxy object
26
+ * @example
27
+ * ```js
28
+ * const initial = {z...};
29
+ * const [state, setState] = createStore(initial);
30
+ * initial === state; // => false
31
+ * initial === unwrap(state); // => true
32
+ * ```
33
+ */
10
34
  export declare function unwrap<T>(item: T, set?: Set<unknown>): T;
11
- export declare function getDataNodes(target: StoreNode): any;
12
- export declare function getDataNode(nodes: Record<string, any>, property: string | symbol, value: any): any;
35
+ export declare function getDataNodes(target: StoreNode): DataNodes;
36
+ export declare function getDataNode(nodes: DataNodes, property: PropertyKey, value: any): DataNode;
13
37
  export declare function proxyDescriptor(target: StoreNode, property: PropertyKey): PropertyDescriptor | undefined;
14
38
  export declare function trackSelf(target: StoreNode): void;
15
39
  export declare function ownKeys(target: StoreNode): (string | symbol)[];
@@ -9,8 +9,8 @@ export declare var Owner: Owner | null;
9
9
  export declare let Transition: TransitionState | null;
10
10
  declare let ExternalSourceFactory: ExternalSourceFactory | null;
11
11
  declare global {
12
- var _$afterUpdate: () => void;
13
- var _$afterCreateRoot: (root: Owner) => void;
12
+ var _$afterUpdate: (() => void) | undefined;
13
+ var _$afterCreateRoot: ((root: Owner) => void) | undefined;
14
14
  }
15
15
  export interface SignalState<T> {
16
16
  value?: T;
@@ -103,7 +103,7 @@ function writeProp(cur, accessor) {
103
103
  case undefined:
104
104
  BUFFER.push("Object.assign(Object.create(null),");
105
105
  writeObject(cur);
106
- BUFFER.push("))");
106
+ BUFFER.push(")");
107
107
  break;
108
108
  default:
109
109
  return false;
@@ -638,7 +638,7 @@ function generateHydrationScript({
638
638
  eventNames = ["click", "input"],
639
639
  nonce
640
640
  } = {}) {
641
- return `<script${nonce ? ` nonce="${nonce}"` : ""}>var e,t;e=window._$HY||(_$HY={events:[],completed:new WeakSet,r:{},fe(){},init(e,t){_$HY.r[e]=[new Promise(((e,o)=>t=e)),t]},set(e,t,o){(o=_$HY.r[e])&&o[1](t),_$HY.r[e]=[t]},unset(e){delete _$HY.r[e]},load:e=>_$HY.r[e]}),t=e=>e&&e.hasAttribute&&(e.hasAttribute("data-hk")?e:t(e.host&&e.host instanceof Node?e.host:e.parentNode)),["${eventNames.join('", "')}"].forEach((o=>document.addEventListener(o,(o=>{let s=o.composedPath&&o.composedPath()[0]||o.target,a=t(s);a&&!e.completed.has(a)&&e.events.push([a,o])}))));</script><!--xs-->`;
641
+ return `<script${nonce ? ` nonce="${nonce}"` : ""}>(e=>{let t=e=>e&&e.hasAttribute&&(e.hasAttribute("data-hk")?e:t(e.host&&e.host instanceof Node?e.host:e.parentNode));["${eventNames.join('", "')}"].forEach((o=>document.addEventListener(o,(o=>{let s=o.composedPath&&o.composedPath()[0]||o.target,a=t(s);a&&!e.completed.has(a)&&e.events.push([a,o])}))))})(window._$HY||(_$HY={events:[],completed:new WeakSet,r:{},fe(){},init(e,t){_$HY.r[e]=[new Promise((e=>t=e)),t]},set(e,t,o){(o=_$HY.r[e])&&o[1](t),_$HY.r[e]=[t]},unset(e){delete _$HY.r[e]},load:e=>_$HY.r[e]}));</script><!--xs-->`;
642
642
  }
643
643
  function Hydration(props) {
644
644
  if (!solidJs.sharedConfig.context.noHydrate) return props.children;
@@ -871,4 +871,5 @@ exports.ssrElement = ssrElement;
871
871
  exports.ssrHydrationKey = ssrHydrationKey;
872
872
  exports.ssrSpread = ssrSpread;
873
873
  exports.ssrStyle = ssrStyle;
874
+ exports.stringify = stringify;
874
875
  exports.useAssets = useAssets;
@@ -100,7 +100,7 @@ function writeProp(cur, accessor) {
100
100
  case undefined:
101
101
  BUFFER.push("Object.assign(Object.create(null),");
102
102
  writeObject(cur);
103
- BUFFER.push("))");
103
+ BUFFER.push(")");
104
104
  break;
105
105
  default:
106
106
  return false;
@@ -635,7 +635,7 @@ function generateHydrationScript({
635
635
  eventNames = ["click", "input"],
636
636
  nonce
637
637
  } = {}) {
638
- return `<script${nonce ? ` nonce="${nonce}"` : ""}>var e,t;e=window._$HY||(_$HY={events:[],completed:new WeakSet,r:{},fe(){},init(e,t){_$HY.r[e]=[new Promise(((e,o)=>t=e)),t]},set(e,t,o){(o=_$HY.r[e])&&o[1](t),_$HY.r[e]=[t]},unset(e){delete _$HY.r[e]},load:e=>_$HY.r[e]}),t=e=>e&&e.hasAttribute&&(e.hasAttribute("data-hk")?e:t(e.host&&e.host instanceof Node?e.host:e.parentNode)),["${eventNames.join('", "')}"].forEach((o=>document.addEventListener(o,(o=>{let s=o.composedPath&&o.composedPath()[0]||o.target,a=t(s);a&&!e.completed.has(a)&&e.events.push([a,o])}))));</script><!--xs-->`;
638
+ return `<script${nonce ? ` nonce="${nonce}"` : ""}>(e=>{let t=e=>e&&e.hasAttribute&&(e.hasAttribute("data-hk")?e:t(e.host&&e.host instanceof Node?e.host:e.parentNode));["${eventNames.join('", "')}"].forEach((o=>document.addEventListener(o,(o=>{let s=o.composedPath&&o.composedPath()[0]||o.target,a=t(s);a&&!e.completed.has(a)&&e.events.push([a,o])}))))})(window._$HY||(_$HY={events:[],completed:new WeakSet,r:{},fe(){},init(e,t){_$HY.r[e]=[new Promise((e=>t=e)),t]},set(e,t,o){(o=_$HY.r[e])&&o[1](t),_$HY.r[e]=[t]},unset(e){delete _$HY.r[e]},load:e=>_$HY.r[e]}));</script><!--xs-->`;
639
639
  }
640
640
  function Hydration(props) {
641
641
  if (!sharedConfig.context.noHydrate) return props.children;
@@ -800,4 +800,4 @@ function Portal(props) {
800
800
  return "";
801
801
  }
802
802
 
803
- export { Assets, Dynamic, Hydration, HydrationScript, NoHydration, Portal, addEventListener, delegateEvents, escape, generateHydrationScript, getAssets, getHydrationKey, insert, isServer, pipeToNodeWritable, pipeToWritable, renderToStream, renderToString, renderToStringAsync, resolveSSRNode, spread, ssr, ssrAttribute, ssrClassList, ssrElement, ssrHydrationKey, ssrSpread, ssrStyle, useAssets };
803
+ export { Assets, Dynamic, Hydration, HydrationScript, NoHydration, Portal, addEventListener, delegateEvents, escape, generateHydrationScript, getAssets, getHydrationKey, insert, isServer, pipeToNodeWritable, pipeToWritable, renderToStream, renderToString, renderToStringAsync, resolveSSRNode, spread, ssr, ssrAttribute, ssrClassList, ssrElement, ssrHydrationKey, ssrSpread, ssrStyle, stringify, useAssets };
@@ -49,6 +49,7 @@ export function createComponent<T>(Comp: (props: T) => JSX.Element, props: T): J
49
49
  export function mergeProps(...sources: unknown[]): unknown;
50
50
  export function getOwner(): unknown;
51
51
  export function generateHydrationScript(options: { nonce?: string; eventNames?: string[] }): string;
52
+ export function stringify(root: unknown): string;
52
53
 
53
54
  export function Hydration(props: { children?: JSX.Element }): JSX.Element;
54
55
  export function NoHydration(props: { children?: JSX.Element }): JSX.Element;