solid-js 1.6.9 → 1.6.11

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
@@ -169,7 +169,7 @@ function createRoot(fn, detachedOwner) {
169
169
  owned: null,
170
170
  cleanups: null,
171
171
  context: null,
172
- owner: detachedOwner || owner
172
+ owner: detachedOwner === undefined ? owner : detachedOwner
173
173
  },
174
174
  updateFn = unowned ? () => fn(() => {
175
175
  throw new Error("Dispose method must be an explicit argument to createRoot function");
@@ -299,8 +299,8 @@ function createResource(pSource, pFetcher, pOptions) {
299
299
  }
300
300
  function completeLoad(v, err) {
301
301
  runUpdates(() => {
302
- if (!err) setValue(() => v);
303
- setState(err ? "errored" : "ready");
302
+ if (err === undefined) setValue(() => v);
303
+ setState(err !== undefined ? "errored" : "ready");
304
304
  setError(err);
305
305
  for (const c of contexts.keys()) c.decrement();
306
306
  contexts.clear();
@@ -310,7 +310,7 @@ function createResource(pSource, pFetcher, pOptions) {
310
310
  const c = SuspenseContext && lookup(Owner, SuspenseContext.id),
311
311
  v = value(),
312
312
  err = error();
313
- if (err && !pr) throw err;
313
+ if (err !== undefined && !pr) throw err;
314
314
  if (Listener && !Listener.user && c) {
315
315
  createComputed(() => {
316
316
  track();
@@ -423,6 +423,7 @@ function batch(fn) {
423
423
  return runUpdates(fn, false);
424
424
  }
425
425
  function untrack(fn) {
426
+ if (Listener === null) return fn();
426
427
  const listener = Listener;
427
428
  Listener = null;
428
429
  try {
@@ -471,13 +472,16 @@ function getOwner() {
471
472
  }
472
473
  function runWithOwner(o, fn) {
473
474
  const prev = Owner;
475
+ const prevListener = Listener;
474
476
  Owner = o;
477
+ Listener = null;
475
478
  try {
476
479
  return runUpdates(fn, true);
477
480
  } catch (err) {
478
481
  handleError(err);
479
482
  } finally {
480
483
  Owner = prev;
484
+ Listener = prevListener;
481
485
  }
482
486
  }
483
487
  function enableScheduling(scheduler = requestCallback) {
@@ -810,7 +814,8 @@ function runUpdates(fn, init) {
810
814
  completeUpdates(wait);
811
815
  return res;
812
816
  } catch (err) {
813
- if (!Updates) Effects = null;
817
+ if (!wait) Effects = null;
818
+ Updates = null;
814
819
  handleError(err);
815
820
  }
816
821
  }
@@ -961,11 +966,19 @@ function castError(err) {
961
966
  if (err instanceof Error || typeof err === "string") return err;
962
967
  return new Error("Unknown error");
963
968
  }
969
+ function runErrors(fns, err) {
970
+ for (const f of fns) f(err);
971
+ }
964
972
  function handleError(err) {
965
973
  err = castError(err);
966
974
  const fns = ERROR && lookup(Owner, ERROR);
967
975
  if (!fns) throw err;
968
- for (const f of fns) f(err);
976
+ if (Effects) Effects.push({
977
+ fn() {
978
+ runErrors(fns, err);
979
+ },
980
+ state: STALE
981
+ });else runErrors(fns, err);
969
982
  }
970
983
  function lookup(owner, key) {
971
984
  return owner ? owner.context && owner.context[key] !== undefined ? owner.context[key] : lookup(owner.owner, key) : undefined;
package/dist/dev.js CHANGED
@@ -167,7 +167,7 @@ function createRoot(fn, detachedOwner) {
167
167
  owned: null,
168
168
  cleanups: null,
169
169
  context: null,
170
- owner: detachedOwner || owner
170
+ owner: detachedOwner === undefined ? owner : detachedOwner
171
171
  },
172
172
  updateFn = unowned ? () => fn(() => {
173
173
  throw new Error("Dispose method must be an explicit argument to createRoot function");
@@ -297,8 +297,8 @@ function createResource(pSource, pFetcher, pOptions) {
297
297
  }
298
298
  function completeLoad(v, err) {
299
299
  runUpdates(() => {
300
- if (!err) setValue(() => v);
301
- setState(err ? "errored" : "ready");
300
+ if (err === undefined) setValue(() => v);
301
+ setState(err !== undefined ? "errored" : "ready");
302
302
  setError(err);
303
303
  for (const c of contexts.keys()) c.decrement();
304
304
  contexts.clear();
@@ -308,7 +308,7 @@ function createResource(pSource, pFetcher, pOptions) {
308
308
  const c = SuspenseContext && lookup(Owner, SuspenseContext.id),
309
309
  v = value(),
310
310
  err = error();
311
- if (err && !pr) throw err;
311
+ if (err !== undefined && !pr) throw err;
312
312
  if (Listener && !Listener.user && c) {
313
313
  createComputed(() => {
314
314
  track();
@@ -421,6 +421,7 @@ function batch(fn) {
421
421
  return runUpdates(fn, false);
422
422
  }
423
423
  function untrack(fn) {
424
+ if (Listener === null) return fn();
424
425
  const listener = Listener;
425
426
  Listener = null;
426
427
  try {
@@ -469,13 +470,16 @@ function getOwner() {
469
470
  }
470
471
  function runWithOwner(o, fn) {
471
472
  const prev = Owner;
473
+ const prevListener = Listener;
472
474
  Owner = o;
475
+ Listener = null;
473
476
  try {
474
477
  return runUpdates(fn, true);
475
478
  } catch (err) {
476
479
  handleError(err);
477
480
  } finally {
478
481
  Owner = prev;
482
+ Listener = prevListener;
479
483
  }
480
484
  }
481
485
  function enableScheduling(scheduler = requestCallback) {
@@ -808,7 +812,8 @@ function runUpdates(fn, init) {
808
812
  completeUpdates(wait);
809
813
  return res;
810
814
  } catch (err) {
811
- if (!Updates) Effects = null;
815
+ if (!wait) Effects = null;
816
+ Updates = null;
812
817
  handleError(err);
813
818
  }
814
819
  }
@@ -959,11 +964,19 @@ function castError(err) {
959
964
  if (err instanceof Error || typeof err === "string") return err;
960
965
  return new Error("Unknown error");
961
966
  }
967
+ function runErrors(fns, err) {
968
+ for (const f of fns) f(err);
969
+ }
962
970
  function handleError(err) {
963
971
  err = castError(err);
964
972
  const fns = ERROR && lookup(Owner, ERROR);
965
973
  if (!fns) throw err;
966
- for (const f of fns) f(err);
974
+ if (Effects) Effects.push({
975
+ fn() {
976
+ runErrors(fns, err);
977
+ },
978
+ state: STALE
979
+ });else runErrors(fns, err);
967
980
  }
968
981
  function lookup(owner, key) {
969
982
  return owner ? owner.context && owner.context[key] !== undefined ? owner.context[key] : lookup(owner.owner, key) : undefined;
package/dist/server.cjs CHANGED
@@ -23,11 +23,10 @@ const UNOWNED = {
23
23
  };
24
24
  let Owner = null;
25
25
  function createRoot(fn, detachedOwner) {
26
- detachedOwner && (Owner = detachedOwner);
27
26
  const owner = Owner,
28
27
  root = fn.length === 0 ? UNOWNED : {
29
28
  context: null,
30
- owner
29
+ owner: detachedOwner === undefined ? owner : detachedOwner
31
30
  };
32
31
  Owner = root;
33
32
  let result;
package/dist/server.js CHANGED
@@ -21,11 +21,10 @@ const UNOWNED = {
21
21
  };
22
22
  let Owner = null;
23
23
  function createRoot(fn, detachedOwner) {
24
- detachedOwner && (Owner = detachedOwner);
25
24
  const owner = Owner,
26
25
  root = fn.length === 0 ? UNOWNED : {
27
26
  context: null,
28
- owner
27
+ owner: detachedOwner === undefined ? owner : detachedOwner
29
28
  };
30
29
  Owner = root;
31
30
  let result;
package/dist/solid.cjs CHANGED
@@ -163,7 +163,7 @@ function createRoot(fn, detachedOwner) {
163
163
  owned: null,
164
164
  cleanups: null,
165
165
  context: null,
166
- owner: detachedOwner || owner
166
+ owner: detachedOwner === undefined ? owner : detachedOwner
167
167
  },
168
168
  updateFn = unowned ? fn : () => fn(() => untrack(() => cleanNode(root)));
169
169
  Owner = root;
@@ -286,8 +286,8 @@ function createResource(pSource, pFetcher, pOptions) {
286
286
  }
287
287
  function completeLoad(v, err) {
288
288
  runUpdates(() => {
289
- if (!err) setValue(() => v);
290
- setState(err ? "errored" : "ready");
289
+ if (err === undefined) setValue(() => v);
290
+ setState(err !== undefined ? "errored" : "ready");
291
291
  setError(err);
292
292
  for (const c of contexts.keys()) c.decrement();
293
293
  contexts.clear();
@@ -297,7 +297,7 @@ function createResource(pSource, pFetcher, pOptions) {
297
297
  const c = SuspenseContext && lookup(Owner, SuspenseContext.id),
298
298
  v = value(),
299
299
  err = error();
300
- if (err && !pr) throw err;
300
+ if (err !== undefined && !pr) throw err;
301
301
  if (Listener && !Listener.user && c) {
302
302
  createComputed(() => {
303
303
  track();
@@ -410,6 +410,7 @@ function batch(fn) {
410
410
  return runUpdates(fn, false);
411
411
  }
412
412
  function untrack(fn) {
413
+ if (Listener === null) return fn();
413
414
  const listener = Listener;
414
415
  Listener = null;
415
416
  try {
@@ -458,13 +459,16 @@ function getOwner() {
458
459
  }
459
460
  function runWithOwner(o, fn) {
460
461
  const prev = Owner;
462
+ const prevListener = Listener;
461
463
  Owner = o;
464
+ Listener = null;
462
465
  try {
463
466
  return runUpdates(fn, true);
464
467
  } catch (err) {
465
468
  handleError(err);
466
469
  } finally {
467
470
  Owner = prev;
471
+ Listener = prevListener;
468
472
  }
469
473
  }
470
474
  function enableScheduling(scheduler = requestCallback) {
@@ -740,7 +744,8 @@ function runUpdates(fn, init) {
740
744
  completeUpdates(wait);
741
745
  return res;
742
746
  } catch (err) {
743
- if (!Updates) Effects = null;
747
+ if (!wait) Effects = null;
748
+ Updates = null;
744
749
  handleError(err);
745
750
  }
746
751
  }
@@ -890,11 +895,19 @@ function castError(err) {
890
895
  if (err instanceof Error || typeof err === "string") return err;
891
896
  return new Error("Unknown error");
892
897
  }
898
+ function runErrors(fns, err) {
899
+ for (const f of fns) f(err);
900
+ }
893
901
  function handleError(err) {
894
902
  err = castError(err);
895
903
  const fns = ERROR && lookup(Owner, ERROR);
896
904
  if (!fns) throw err;
897
- for (const f of fns) f(err);
905
+ if (Effects) Effects.push({
906
+ fn() {
907
+ runErrors(fns, err);
908
+ },
909
+ state: STALE
910
+ });else runErrors(fns, err);
898
911
  }
899
912
  function lookup(owner, key) {
900
913
  return owner ? owner.context && owner.context[key] !== undefined ? owner.context[key] : lookup(owner.owner, key) : undefined;
package/dist/solid.js CHANGED
@@ -161,7 +161,7 @@ function createRoot(fn, detachedOwner) {
161
161
  owned: null,
162
162
  cleanups: null,
163
163
  context: null,
164
- owner: detachedOwner || owner
164
+ owner: detachedOwner === undefined ? owner : detachedOwner
165
165
  },
166
166
  updateFn = unowned ? fn : () => fn(() => untrack(() => cleanNode(root)));
167
167
  Owner = root;
@@ -284,8 +284,8 @@ function createResource(pSource, pFetcher, pOptions) {
284
284
  }
285
285
  function completeLoad(v, err) {
286
286
  runUpdates(() => {
287
- if (!err) setValue(() => v);
288
- setState(err ? "errored" : "ready");
287
+ if (err === undefined) setValue(() => v);
288
+ setState(err !== undefined ? "errored" : "ready");
289
289
  setError(err);
290
290
  for (const c of contexts.keys()) c.decrement();
291
291
  contexts.clear();
@@ -295,7 +295,7 @@ function createResource(pSource, pFetcher, pOptions) {
295
295
  const c = SuspenseContext && lookup(Owner, SuspenseContext.id),
296
296
  v = value(),
297
297
  err = error();
298
- if (err && !pr) throw err;
298
+ if (err !== undefined && !pr) throw err;
299
299
  if (Listener && !Listener.user && c) {
300
300
  createComputed(() => {
301
301
  track();
@@ -408,6 +408,7 @@ function batch(fn) {
408
408
  return runUpdates(fn, false);
409
409
  }
410
410
  function untrack(fn) {
411
+ if (Listener === null) return fn();
411
412
  const listener = Listener;
412
413
  Listener = null;
413
414
  try {
@@ -456,13 +457,16 @@ function getOwner() {
456
457
  }
457
458
  function runWithOwner(o, fn) {
458
459
  const prev = Owner;
460
+ const prevListener = Listener;
459
461
  Owner = o;
462
+ Listener = null;
460
463
  try {
461
464
  return runUpdates(fn, true);
462
465
  } catch (err) {
463
466
  handleError(err);
464
467
  } finally {
465
468
  Owner = prev;
469
+ Listener = prevListener;
466
470
  }
467
471
  }
468
472
  function enableScheduling(scheduler = requestCallback) {
@@ -738,7 +742,8 @@ function runUpdates(fn, init) {
738
742
  completeUpdates(wait);
739
743
  return res;
740
744
  } catch (err) {
741
- if (!Updates) Effects = null;
745
+ if (!wait) Effects = null;
746
+ Updates = null;
742
747
  handleError(err);
743
748
  }
744
749
  }
@@ -888,11 +893,19 @@ function castError(err) {
888
893
  if (err instanceof Error || typeof err === "string") return err;
889
894
  return new Error("Unknown error");
890
895
  }
896
+ function runErrors(fns, err) {
897
+ for (const f of fns) f(err);
898
+ }
891
899
  function handleError(err) {
892
900
  err = castError(err);
893
901
  const fns = ERROR && lookup(Owner, ERROR);
894
902
  if (!fns) throw err;
895
- for (const f of fns) f(err);
903
+ if (Effects) Effects.push({
904
+ fn() {
905
+ runErrors(fns, err);
906
+ },
907
+ state: STALE
908
+ });else runErrors(fns, err);
896
909
  }
897
910
  function lookup(owner, key) {
898
911
  return owner ? owner.context && owner.context[key] !== undefined ? owner.context[key] : lookup(owner.owner, key) : undefined;
@@ -5,8 +5,11 @@ var h = require('solid-js/h');
5
5
  function Fragment(props) {
6
6
  return props.children;
7
7
  }
8
+ function jsx(type, props) {
9
+ return h(type, props);
10
+ }
8
11
 
9
- exports.jsx = h;
10
- exports.jsxDEV = h;
11
- exports.jsxs = h;
12
12
  exports.Fragment = Fragment;
13
+ exports.jsx = jsx;
14
+ exports.jsxDEV = jsx;
15
+ exports.jsxs = jsx;
@@ -1,7 +1,10 @@
1
- export { default as jsx, default as jsxDEV, default as jsxs } from 'solid-js/h';
1
+ import h from 'solid-js/h';
2
2
 
3
3
  function Fragment(props) {
4
4
  return props.children;
5
5
  }
6
+ function jsx(type, props) {
7
+ return h(type, props);
8
+ }
6
9
 
7
- export { Fragment };
10
+ export { Fragment, jsx, jsx as jsxDEV, jsx as jsxs };
@@ -1,7 +1,11 @@
1
- import h from "solid-js/h";
2
1
  export type { JSX } from "./jsx";
3
2
  import type { JSX } from "./jsx";
4
3
  declare function Fragment(props: {
5
4
  children: JSX.Element;
6
5
  }): JSX.Element;
7
- export { h as jsx, h as jsxs, h as jsxDEV, Fragment };
6
+ declare function jsx(type: any, props: any): () => (Node & {
7
+ [key: string]: any;
8
+ }) | (Node & {
9
+ [key: string]: any;
10
+ })[];
11
+ export { jsx, jsx as jsxs, jsx as jsxDEV, Fragment };
@@ -1692,6 +1692,7 @@ export namespace JSX {
1692
1692
  patternUnits?: FunctionMaybe<SVGUnits>;
1693
1693
  patternContentUnits?: FunctionMaybe<SVGUnits>;
1694
1694
  patternTransform?: FunctionMaybe<string>;
1695
+ href?: string;
1695
1696
  }
1696
1697
  interface PolygonSVGAttributes<T>
1697
1698
  extends GraphicsElementSVGAttributes<T>,
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.9",
4
+ "version": "1.6.11",
5
5
  "author": "Ryan Carniato",
6
6
  "license": "MIT",
7
7
  "homepage": "https://solidjs.com",
@@ -246,7 +246,8 @@
246
246
  },
247
247
  "require": "./html/dist/html.cjs"
248
248
  },
249
- "./html/dist/*": "./html/dist/*"
249
+ "./html/dist/*": "./html/dist/*",
250
+ "./package.json": "./package.json"
250
251
  },
251
252
  "keywords": [
252
253
  "solid",
@@ -1,4 +1,4 @@
1
- export declare type ReconcileOptions = {
1
+ export type ReconcileOptions = {
2
2
  key?: string | null;
3
3
  merge?: boolean;
4
4
  };
@@ -6,11 +6,11 @@ export declare function setProperty(state: any, property: PropertyKey, value: an
6
6
  export declare function updatePath(current: any, path: any[], traversed?: PropertyKey[]): void;
7
7
  export declare function createStore<T>(state: T | Store<T>): [Store<T>, SetStoreFunction<T>];
8
8
  export declare function createMutable<T>(state: T | Store<T>): T;
9
- declare type ReconcileOptions = {
9
+ type ReconcileOptions = {
10
10
  key?: string | null;
11
11
  merge?: boolean;
12
12
  };
13
- export declare function reconcile<T extends U, U>(value: T, options?: ReconcileOptions): (state: U) => T;
13
+ export declare function reconcile<T extends U, U extends object>(value: T, options?: ReconcileOptions): (state: U) => T;
14
14
  export declare function produce<T>(fn: (state: T) => void): (state: T) => T;
15
15
  export declare const DEV: undefined;
16
16
  export {};
@@ -2,12 +2,12 @@ export declare const $RAW: unique symbol, $NODE: unique symbol, $NAME: unique sy
2
2
  declare global {
3
3
  var _$onStoreNodeUpdate: OnStoreNodeUpdate | undefined;
4
4
  }
5
- declare type DataNode = {
5
+ type DataNode = {
6
6
  (): any;
7
7
  $(value?: any): void;
8
8
  };
9
- declare type DataNodes = Record<PropertyKey, DataNode>;
10
- export declare type OnStoreNodeUpdate = (state: StoreNode, property: PropertyKey, value: StoreNode | NotWrappable, prev: StoreNode | NotWrappable) => void;
9
+ type DataNodes = Record<PropertyKey, DataNode>;
10
+ export type OnStoreNodeUpdate = (state: StoreNode, property: PropertyKey, value: StoreNode | NotWrappable, prev: StoreNode | NotWrappable) => void;
11
11
  export interface StoreNode {
12
12
  [$NAME]?: string;
13
13
  [$NODE]?: DataNodes;
@@ -17,8 +17,8 @@ export declare namespace SolidStore {
17
17
  interface Unwrappable {
18
18
  }
19
19
  }
20
- export declare type NotWrappable = string | number | bigint | symbol | boolean | Function | null | undefined | SolidStore.Unwrappable[keyof SolidStore.Unwrappable];
21
- export declare type Store<T> = T;
20
+ export type NotWrappable = string | number | bigint | symbol | boolean | Function | null | undefined | SolidStore.Unwrappable[keyof SolidStore.Unwrappable];
21
+ export type Store<T> = T;
22
22
  export declare function isWrappable<T>(obj: T | NotWrappable): obj is T;
23
23
  /**
24
24
  * Returns the underlying data in the store without a proxy.
@@ -34,45 +34,45 @@ export declare function isWrappable<T>(obj: T | NotWrappable): obj is T;
34
34
  export declare function unwrap<T>(item: T, set?: Set<unknown>): T;
35
35
  export declare function getDataNodes(target: StoreNode): DataNodes;
36
36
  export declare function getDataNode(nodes: DataNodes, property: PropertyKey, value: any): DataNode;
37
- export declare function proxyDescriptor(target: StoreNode, property: PropertyKey): PropertyDescriptor | undefined;
37
+ export declare function proxyDescriptor(target: StoreNode, property: PropertyKey): TypedPropertyDescriptor<any> | undefined;
38
38
  export declare function trackSelf(target: StoreNode): void;
39
39
  export declare function ownKeys(target: StoreNode): (string | symbol)[];
40
40
  export declare function setProperty(state: StoreNode, property: PropertyKey, value: any, deleting?: boolean): void;
41
41
  export declare function updatePath(current: StoreNode, path: any[], traversed?: PropertyKey[]): void;
42
42
  /** @deprecated */
43
- export declare type DeepReadonly<T> = 0 extends 1 & T ? T : T extends NotWrappable ? T : {
43
+ export type DeepReadonly<T> = 0 extends 1 & T ? T : T extends NotWrappable ? T : {
44
44
  readonly [K in keyof T]: DeepReadonly<T[K]>;
45
45
  };
46
46
  /** @deprecated */
47
- export declare type DeepMutable<T> = 0 extends 1 & T ? T : T extends NotWrappable ? T : {
47
+ export type DeepMutable<T> = 0 extends 1 & T ? T : T extends NotWrappable ? T : {
48
48
  -readonly [K in keyof T]: DeepMutable<T[K]>;
49
49
  };
50
- export declare type CustomPartial<T> = T extends readonly unknown[] ? "0" extends keyof T ? {
50
+ export type CustomPartial<T> = T extends readonly unknown[] ? "0" extends keyof T ? {
51
51
  [K in Extract<keyof T, `${number}`>]?: T[K];
52
52
  } : {
53
53
  [x: number]: T[number];
54
54
  } : Partial<T>;
55
- export declare type PickMutable<T> = {
55
+ export type PickMutable<T> = {
56
56
  [K in keyof T as (<U>() => U extends {
57
57
  [V in K]: T[V];
58
58
  } ? 1 : 2) extends <U>() => U extends {
59
59
  -readonly [V in K]: T[V];
60
60
  } ? 1 : 2 ? K : never]: T[K];
61
61
  };
62
- export declare type StorePathRange = {
62
+ export type StorePathRange = {
63
63
  from?: number;
64
64
  to?: number;
65
65
  by?: number;
66
66
  };
67
- export declare type ArrayFilterFn<T> = (item: T, index: number) => boolean;
68
- export declare type StoreSetter<T, U extends PropertyKey[] = []> = T | CustomPartial<T> | ((prevState: T, traversed: U) => T | CustomPartial<T>);
69
- 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);
70
- declare type W<T> = Exclude<T, NotWrappable>;
71
- 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;
72
- declare type MutableKeyOf<T> = KeyOf<T> & keyof PickMutable<T>;
73
- declare type Rest<T, U extends PropertyKey[], K extends KeyOf<T> = KeyOf<T>> = K extends keyof PickMutable<T> ? [Part<T, K>, ...RestSetterOrContinue<T[K], [K, ...U]>] : K extends KeyOf<K> ? [Part<T, K>, ...RestContinue<T[K], [K, ...U]>] : never;
74
- declare type RestContinue<T, U extends PropertyKey[]> = 0 extends 1 & T ? [...Part<any>[], StoreSetter<any, PropertyKey[]>] : Rest<T, U>;
75
- declare type RestSetterOrContinue<T, U extends PropertyKey[]> = [StoreSetter<T, U>] | RestContinue<T, U>;
67
+ export type ArrayFilterFn<T> = (item: T, index: number) => boolean;
68
+ export type StoreSetter<T, U extends PropertyKey[] = []> = T | CustomPartial<T> | ((prevState: T, traversed: U) => T | CustomPartial<T>);
69
+ export 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);
70
+ type W<T> = Exclude<T, NotWrappable>;
71
+ 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;
72
+ type MutableKeyOf<T> = KeyOf<T> & keyof PickMutable<T>;
73
+ type Rest<T, U extends PropertyKey[], K extends KeyOf<T> = KeyOf<T>> = [T] extends [never] ? never : K extends MutableKeyOf<T> ? [Part<T, K>, ...RestSetterOrContinue<T[K], [K, ...U]>] : K extends KeyOf<T> ? [Part<T, K>, ...RestContinue<T[K], [K, ...U]>] : never;
74
+ type RestContinue<T, U extends PropertyKey[]> = 0 extends 1 & T ? [...Part<any>[], StoreSetter<any, PropertyKey[]>] : Rest<W<T>, U>;
75
+ type RestSetterOrContinue<T, U extends PropertyKey[]> = [StoreSetter<T, U>] | RestContinue<T, U>;
76
76
  export interface SetStoreFunction<T> {
77
77
  <K1 extends KeyOf<W<T>>, K2 extends KeyOf<W<W<T>[K1]>>, K3 extends KeyOf<W<W<W<T>[K1]>[K2]>>, K4 extends KeyOf<W<W<W<W<T>[K1]>[K2]>[K3]>>, K5 extends KeyOf<W<W<W<W<W<T>[K1]>[K2]>[K3]>[K4]>>, K6 extends KeyOf<W<W<W<W<W<W<T>[K1]>[K2]>[K3]>[K4]>[K5]>>, K7 extends MutableKeyOf<W<W<W<W<W<W<W<T>[K1]>[K2]>[K3]>[K4]>[K5]>[K6]>>>(k1: Part<W<T>, K1>, k2: Part<W<W<T>[K1]>, K2>, k3: Part<W<W<W<T>[K1]>[K2]>, K3>, k4: Part<W<W<W<W<T>[K1]>[K2]>[K3]>, K4>, k5: Part<W<W<W<W<W<T>[K1]>[K2]>[K3]>[K4]>, K5>, k6: Part<W<W<W<W<W<W<T>[K1]>[K2]>[K3]>[K4]>[K5]>, K6>, k7: Part<W<W<W<W<W<W<W<T>[K1]>[K2]>[K3]>[K4]>[K5]>[K6]>, K7>, setter: StoreSetter<W<W<W<W<W<W<W<T>[K1]>[K2]>[K3]>[K4]>[K5]>[K6]>[K7], [
78
78
  K7,
@@ -83,7 +83,7 @@ export interface SetStoreFunction<T> {
83
83
  K2,
84
84
  K1
85
85
  ]>): void;
86
- <K1 extends KeyOf<W<T>>, K2 extends KeyOf<W<W<T>[K1]>>, K3 extends KeyOf<W<W<W<T>[K1]>[K2]>>, K4 extends KeyOf<W<W<W<W<T>[K1]>[K2]>[K3]>>, K5 extends KeyOf<W<W<W<W<W<T>[K1]>[K2]>[K3]>[K4]>>, K6 extends KeyOf<W<W<W<W<W<W<T>[K1]>[K2]>[K3]>[K4]>[K5]>>>(k1: Part<W<T>, K1>, k2: Part<W<W<T>[K1]>, K2>, k3: Part<W<W<W<T>[K1]>[K2]>, K3>, k4: Part<W<W<W<W<T>[K1]>[K2]>[K3]>, K4>, k5: Part<W<W<W<W<W<T>[K1]>[K2]>[K3]>[K4]>, K5>, k6: Part<W<W<W<W<W<W<T>[K1]>[K2]>[K3]>[K4]>[K5]>, K6>, setter: StoreSetter<W<W<W<W<W<W<T>[K1]>[K2]>[K3]>[K4]>[K5]>[K6], [K6, K5, K4, K3, K2, K1]>): void;
86
+ <K1 extends KeyOf<W<T>>, K2 extends KeyOf<W<W<T>[K1]>>, K3 extends KeyOf<W<W<W<T>[K1]>[K2]>>, K4 extends KeyOf<W<W<W<W<T>[K1]>[K2]>[K3]>>, K5 extends KeyOf<W<W<W<W<W<T>[K1]>[K2]>[K3]>[K4]>>, K6 extends MutableKeyOf<W<W<W<W<W<W<T>[K1]>[K2]>[K3]>[K4]>[K5]>>>(k1: Part<W<T>, K1>, k2: Part<W<W<T>[K1]>, K2>, k3: Part<W<W<W<T>[K1]>[K2]>, K3>, k4: Part<W<W<W<W<T>[K1]>[K2]>[K3]>, K4>, k5: Part<W<W<W<W<W<T>[K1]>[K2]>[K3]>[K4]>, K5>, k6: Part<W<W<W<W<W<W<T>[K1]>[K2]>[K3]>[K4]>[K5]>, K6>, setter: StoreSetter<W<W<W<W<W<W<T>[K1]>[K2]>[K3]>[K4]>[K5]>[K6], [K6, K5, K4, K3, K2, K1]>): void;
87
87
  <K1 extends KeyOf<W<T>>, K2 extends KeyOf<W<W<T>[K1]>>, K3 extends KeyOf<W<W<W<T>[K1]>[K2]>>, K4 extends KeyOf<W<W<W<W<T>[K1]>[K2]>[K3]>>, K5 extends MutableKeyOf<W<W<W<W<W<T>[K1]>[K2]>[K3]>[K4]>>>(k1: Part<W<T>, K1>, k2: Part<W<W<T>[K1]>, K2>, k3: Part<W<W<W<T>[K1]>[K2]>, K3>, k4: Part<W<W<W<W<T>[K1]>[K2]>[K3]>, K4>, k5: Part<W<W<W<W<W<T>[K1]>[K2]>[K3]>[K4]>, K5>, setter: StoreSetter<W<W<W<W<W<T>[K1]>[K2]>[K3]>[K4]>[K5], [K5, K4, K3, K2, K1]>): void;
88
88
  <K1 extends KeyOf<W<T>>, K2 extends KeyOf<W<W<T>[K1]>>, K3 extends KeyOf<W<W<W<T>[K1]>[K2]>>, K4 extends MutableKeyOf<W<W<W<W<T>[K1]>[K2]>[K3]>>>(k1: Part<W<T>, K1>, k2: Part<W<W<T>[K1]>, K2>, k3: Part<W<W<W<T>[K1]>[K2]>, K3>, k4: Part<W<W<W<W<T>[K1]>[K2]>[K3]>, K4>, setter: StoreSetter<W<W<W<W<T>[K1]>[K2]>[K3]>[K4], [K4, K3, K2, K1]>): void;
89
89
  <K1 extends KeyOf<W<T>>, K2 extends KeyOf<W<W<T>[K1]>>, K3 extends MutableKeyOf<W<W<W<T>[K1]>[K2]>>>(k1: Part<W<T>, K1>, k2: Part<W<W<T>[K1]>, K2>, k3: Part<W<W<W<T>[K1]>[K2]>, K3>, setter: StoreSetter<W<W<W<T>[K1]>[K2]>[K3], [K3, K2, K1]>): void;
package/types/index.d.ts CHANGED
@@ -1,11 +1,11 @@
1
1
  export { $DEVCOMP, $PROXY, $TRACK, batch, children, createComputed, createContext, createDeferred, createEffect, createMemo, createReaction, createRenderEffect, createResource, createRoot, createSelector, createSignal, enableExternalSource, enableScheduling, equalFn, getListener, getOwner, on, onCleanup, onError, onMount, runWithOwner, startTransition, untrack, useContext, useTransition } from "./reactive/signal.js";
2
- export type { Accessor, AccessorArray, ChildrenReturn, Context, EffectFunction, InitializedResource, InitializedResourceOptions, InitializedResourceReturn, MemoOptions, NoInfer, OnEffectFunction, Owner, Resource, ResourceActions, ResourceFetcher, ResourceFetcherInfo, ResourceOptions, ResourceReturn, ResourceSource, ReturnTypes, Setter, Signal, SignalOptions } from "./reactive/signal.js";
2
+ export type { Accessor, AccessorArray, ChildrenReturn, Context, EffectFunction, EffectOptions, InitializedResource, InitializedResourceOptions, InitializedResourceReturn, MemoOptions, NoInfer, OnEffectFunction, OnOptions, Owner, Resource, ResourceActions, ResourceFetcher, ResourceFetcherInfo, ResourceOptions, ResourceReturn, ResourceSource, ReturnTypes, Setter, Signal, SignalOptions } from "./reactive/signal.js";
3
3
  export * from "./reactive/observable.js";
4
4
  export * from "./reactive/scheduler.js";
5
5
  export * from "./reactive/array.js";
6
6
  export * from "./render/index.js";
7
7
  import type { JSX } from "./jsx.js";
8
- declare type JSXElement = JSX.Element;
8
+ type JSXElement = JSX.Element;
9
9
  export type { JSXElement, JSX };
10
10
  import { hashValue, registerGraph, serializeGraph, writeSignal } from "./reactive/signal.js";
11
11
  declare let DEV: {
package/types/jsx.d.ts CHANGED
@@ -1702,6 +1702,7 @@ export namespace JSX {
1702
1702
  patternUnits?: SVGUnits;
1703
1703
  patternContentUnits?: SVGUnits;
1704
1704
  patternTransform?: string;
1705
+ href?: string;
1705
1706
  }
1706
1707
  interface PolygonSVGAttributes<T>
1707
1708
  extends GraphicsElementSVGAttributes<T>,
@@ -4,7 +4,13 @@ declare global {
4
4
  readonly observable: symbol;
5
5
  }
6
6
  }
7
- export declare type ObservableObserver<T> = ((v: T) => void) | {
7
+ interface Observable<T> {
8
+ subscribe(observer: ObservableObserver<T>): {
9
+ unsubscribe(): void;
10
+ };
11
+ [Symbol.observable](): Observable<T>;
12
+ }
13
+ export type ObservableObserver<T> = ((v: T) => void) | {
8
14
  next?: (v: T) => void;
9
15
  error?: (v: any) => void;
10
16
  complete?: (v: boolean) => void;
@@ -19,14 +25,10 @@ export declare type ObservableObserver<T> = ((v: T) => void) | {
19
25
  * ```
20
26
  * description https://www.solidjs.com/docs/latest/api#observable
21
27
  */
22
- export declare function observable<T>(input: Accessor<T>): {
23
- subscribe(observer: ObservableObserver<T>): {
24
- unsubscribe(): void;
25
- };
26
- [Symbol.observable](): any;
27
- };
28
+ export declare function observable<T>(input: Accessor<T>): Observable<T>;
28
29
  export declare function from<T>(producer: ((setter: Setter<T | undefined>) => () => void) | {
29
30
  subscribe: (fn: (v: T) => void) => (() => void) | {
30
31
  unsubscribe: () => void;
31
32
  };
32
33
  }): Accessor<T | undefined>;
34
+ export {};
@@ -12,7 +12,7 @@ declare global {
12
12
  var _$afterUpdate: (() => void) | undefined;
13
13
  var _$afterCreateRoot: ((root: Owner) => void) | undefined;
14
14
  }
15
- export declare type ComputationState = 0 | 1 | 2;
15
+ export type ComputationState = 0 | 1 | 2;
16
16
  export interface SourceMapValue {
17
17
  value: unknown;
18
18
  graph?: Owner;
@@ -57,12 +57,12 @@ export interface TransitionState {
57
57
  done?: Promise<void>;
58
58
  resolve?: () => void;
59
59
  }
60
- declare type ExternalSourceFactory = <Prev, Next extends Prev = Prev>(fn: EffectFunction<Prev, Next>, trigger: () => void) => ExternalSource;
60
+ type ExternalSourceFactory = <Prev, Next extends Prev = Prev>(fn: EffectFunction<Prev, Next>, trigger: () => void) => ExternalSource;
61
61
  export interface ExternalSource {
62
62
  track: EffectFunction<any, any>;
63
63
  dispose: () => void;
64
64
  }
65
- export declare type RootFunction<T> = (dispose: () => void) => T;
65
+ export type RootFunction<T> = (dispose: () => void) => T;
66
66
  /**
67
67
  * Creates a new non-tracked reactive context that doesn't auto-dispose
68
68
  *
@@ -72,10 +72,10 @@ export declare type RootFunction<T> = (dispose: () => void) => T;
72
72
  *
73
73
  * @description https://www.solidjs.com/docs/latest/api#createroot
74
74
  */
75
- export declare function createRoot<T>(fn: RootFunction<T>, detachedOwner?: Owner): T;
76
- export declare type Accessor<T> = () => T;
77
- export declare type Setter<T> = (undefined extends T ? () => undefined : {}) & (<U extends T>(value: (prev: T) => U) => U) & (<U extends T>(value: Exclude<U, Function>) => U) & (<U extends T>(value: Exclude<U, Function> | ((prev: T) => U)) => U);
78
- export declare type Signal<T> = [get: Accessor<T>, set: Setter<T>];
75
+ export declare function createRoot<T>(fn: RootFunction<T>, detachedOwner?: typeof Owner): T;
76
+ export type Accessor<T> = () => T;
77
+ export type Setter<T> = (undefined extends T ? () => undefined : {}) & (<U extends T>(value: (prev: T) => U) => U) & (<U extends T>(value: Exclude<U, Function>) => U) & (<U extends T>(value: Exclude<U, Function> | ((prev: T) => U)) => U);
78
+ export type Signal<T> = [get: Accessor<T>, set: Setter<T>];
79
79
  export interface SignalOptions<T> extends MemoOptions<T> {
80
80
  internal?: boolean;
81
81
  }
@@ -107,10 +107,10 @@ export declare function createSignal<T>(value: T, options?: SignalOptions<T>): S
107
107
  export interface BaseOptions {
108
108
  name?: string;
109
109
  }
110
- export declare type NoInfer<T extends any> = [T][T extends any ? 0 : never];
110
+ export type NoInfer<T extends any> = [T][T extends any ? 0 : never];
111
111
  export interface EffectOptions extends BaseOptions {
112
112
  }
113
- export declare type EffectFunction<Prev, Next extends Prev = Prev> = (v: Prev) => Next;
113
+ export type EffectFunction<Prev, Next extends Prev = Prev> = (v: Prev) => Next;
114
114
  /**
115
115
  * Creates a reactive computation that runs immediately before render, mainly used to write to other reactive primitives
116
116
  * ```typescript
@@ -235,19 +235,19 @@ interface Errored {
235
235
  latest: never;
236
236
  (): never;
237
237
  }
238
- export declare type Resource<T> = Unresolved | Pending | Ready<T> | Refreshing<T> | Errored;
239
- export declare type InitializedResource<T> = Ready<T> | Refreshing<T> | Errored;
240
- export declare type ResourceActions<T, R = unknown> = {
238
+ export type Resource<T> = Unresolved | Pending | Ready<T> | Refreshing<T> | Errored;
239
+ export type InitializedResource<T> = Ready<T> | Refreshing<T> | Errored;
240
+ export type ResourceActions<T, R = unknown> = {
241
241
  mutate: Setter<T>;
242
242
  refetch: (info?: R) => T | Promise<T> | undefined | null;
243
243
  };
244
- export declare type ResourceSource<S> = S | false | null | undefined | (() => S | false | null | undefined);
245
- export declare type ResourceFetcher<S, T, R = unknown> = (k: S, info: ResourceFetcherInfo<T, R>) => T | Promise<T>;
246
- export declare type ResourceFetcherInfo<T, R = unknown> = {
244
+ export type ResourceSource<S> = S | false | null | undefined | (() => S | false | null | undefined);
245
+ export type ResourceFetcher<S, T, R = unknown> = (k: S, info: ResourceFetcherInfo<T, R>) => T | Promise<T>;
246
+ export type ResourceFetcherInfo<T, R = unknown> = {
247
247
  value: T | undefined;
248
248
  refetching: R | boolean;
249
249
  };
250
- export declare type ResourceOptions<T, S = unknown> = {
250
+ export type ResourceOptions<T, S = unknown> = {
251
251
  initialValue?: T;
252
252
  name?: string;
253
253
  deferStream?: boolean;
@@ -257,11 +257,11 @@ export declare type ResourceOptions<T, S = unknown> = {
257
257
  value: T | undefined;
258
258
  }) => void;
259
259
  };
260
- export declare type InitializedResourceOptions<T, S = unknown> = ResourceOptions<T, S> & {
260
+ export type InitializedResourceOptions<T, S = unknown> = ResourceOptions<T, S> & {
261
261
  initialValue: T;
262
262
  };
263
- export declare type ResourceReturn<T, R = unknown> = [Resource<T>, ResourceActions<T | undefined, R>];
264
- export declare type InitializedResourceReturn<T, R = unknown> = [
263
+ export type ResourceReturn<T, R = unknown> = [Resource<T>, ResourceActions<T | undefined, R>];
264
+ export type InitializedResourceReturn<T, R = unknown> = [
265
265
  InitializedResource<T>,
266
266
  ResourceActions<T, R>
267
267
  ];
@@ -316,7 +316,7 @@ export interface DeferredOptions<T> {
316
316
  * @description https://www.solidjs.com/docs/latest/api#createdeferred
317
317
  */
318
318
  export declare function createDeferred<T>(source: Accessor<T>, options?: DeferredOptions<T>): Accessor<T>;
319
- export declare type EqualityCheckerFunction<T, U> = (a: U, b: T) => boolean;
319
+ export type EqualityCheckerFunction<T, U> = (a: U, b: T) => boolean;
320
320
  /**
321
321
  * Creates a conditional signal that only notifies subscribers when entering or exiting their key matching the value
322
322
  * ```typescript
@@ -359,13 +359,13 @@ export declare function batch<T>(fn: Accessor<T>): T;
359
359
  */
360
360
  export declare function untrack<T>(fn: Accessor<T>): T;
361
361
  /** @deprecated */
362
- export declare type ReturnTypes<T> = T extends readonly Accessor<unknown>[] ? {
362
+ export type ReturnTypes<T> = T extends readonly Accessor<unknown>[] ? {
363
363
  [K in keyof T]: T[K] extends Accessor<infer I> ? I : never;
364
364
  } : T extends Accessor<infer I> ? I : never;
365
- export declare type AccessorArray<T> = [...Extract<{
365
+ export type AccessorArray<T> = [...Extract<{
366
366
  [K in keyof T]: Accessor<T[K]>;
367
367
  }, readonly unknown[]>];
368
- export declare type OnEffectFunction<S, Prev, Next extends Prev = Prev> = (input: S, prevInput: S | undefined, prev: Prev) => Next;
368
+ export type OnEffectFunction<S, Prev, Next extends Prev = Prev> = (input: S, prevInput: S | undefined, prev: Prev) => Next;
369
369
  export interface OnOptions {
370
370
  defer?: boolean;
371
371
  }
@@ -412,9 +412,11 @@ export declare function onMount(fn: () => void): void;
412
412
  * onCleanup - run an effect once before the reactive scope is disposed
413
413
  * @param fn an effect that should run only once on cleanup
414
414
  *
415
+ * @returns the same {@link fn} function that was passed in
416
+ *
415
417
  * @description https://www.solidjs.com/docs/latest/api#oncleanup
416
418
  */
417
- export declare function onCleanup(fn: () => void): () => void;
419
+ export declare function onCleanup<T extends () => any>(fn: T): T;
418
420
  /**
419
421
  * onError - run an effect whenever an error is thrown within the context of the child scopes
420
422
  * @param fn an error handler that receives the error
@@ -426,7 +428,7 @@ export declare function onCleanup(fn: () => void): () => void;
426
428
  export declare function onError(fn: (err: any) => void): void;
427
429
  export declare function getListener(): Computation<any, any> | null;
428
430
  export declare function getOwner(): Owner | null;
429
- export declare function runWithOwner<T>(o: Owner, fn: () => T): T | undefined;
431
+ export declare function runWithOwner<T>(o: typeof Owner, fn: () => T): T | undefined;
430
432
  export declare function enableScheduling(scheduler?: typeof requestCallback): void;
431
433
  /**
432
434
  * ```typescript
@@ -435,7 +437,7 @@ export declare function enableScheduling(scheduler?: typeof requestCallback): vo
435
437
  * @description https://www.solidjs.com/docs/latest/api#usetransition
436
438
  */
437
439
  export declare function startTransition(fn: () => unknown): Promise<void>;
438
- export declare type Transition = [Accessor<boolean>, (fn: () => void) => Promise<void>];
440
+ export type Transition = [Accessor<boolean>, (fn: () => void) => Promise<void>];
439
441
  /**
440
442
  * ```typescript
441
443
  * export function useTransition(): [
@@ -459,7 +461,7 @@ interface GraphRecord {
459
461
  [k: string]: GraphRecord | unknown;
460
462
  }
461
463
  export declare function serializeGraph(owner?: Owner | null): GraphRecord;
462
- export declare type ContextProviderComponent<T> = FlowComponent<{
464
+ export type ContextProviderComponent<T> = FlowComponent<{
463
465
  value: T;
464
466
  }>;
465
467
  export interface Context<T> {
@@ -497,9 +499,9 @@ export declare function createContext<T>(defaultValue: T, options?: EffectOption
497
499
  * @description https://www.solidjs.com/docs/latest/api#usecontext
498
500
  */
499
501
  export declare function useContext<T>(context: Context<T>): T;
500
- export declare type ResolvedJSXElement = Exclude<JSX.Element, JSX.ArrayElement | JSX.FunctionElement>;
501
- export declare type ResolvedChildren = ResolvedJSXElement | ResolvedJSXElement[];
502
- export declare type ChildrenReturn = Accessor<ResolvedChildren> & {
502
+ export type ResolvedJSXElement = Exclude<JSX.Element, JSX.ArrayElement | JSX.FunctionElement>;
503
+ export type ResolvedChildren = ResolvedJSXElement | ResolvedJSXElement[];
504
+ export type ChildrenReturn = Accessor<ResolvedChildren> & {
503
505
  toArray: () => ResolvedJSXElement[];
504
506
  };
505
507
  /**
@@ -511,14 +513,14 @@ export declare type ChildrenReturn = Accessor<ResolvedChildren> & {
511
513
  * @description https://www.solidjs.com/docs/latest/api#children
512
514
  */
513
515
  export declare function children(fn: Accessor<JSX.Element>): ChildrenReturn;
514
- export declare type SuspenseContextType = {
516
+ export type SuspenseContextType = {
515
517
  increment?: () => void;
516
518
  decrement?: () => void;
517
519
  inFallback?: () => boolean;
518
520
  effects?: Computation<any>[];
519
521
  resolved?: boolean;
520
522
  };
521
- declare type SuspenseContext = Context<SuspenseContextType> & {
523
+ type SuspenseContext = Context<SuspenseContextType> & {
522
524
  active?(): boolean;
523
525
  increment?(): void;
524
526
  decrement?(): void;
@@ -2,7 +2,7 @@ import type { JSX } from "../jsx.js";
2
2
  /**
3
3
  * **[experimental]** controls the order in which suspended content is rendered
4
4
  *
5
- * @description https://www.solidjs.com/docs/latest/api#%3Csuspenselist%3E-(experimental)
5
+ * @description https://www.solidjs.com/docs/latest/api#suspenselist-experimental
6
6
  */
7
7
  export declare function SuspenseList(props: {
8
8
  children: JSX.Element;
@@ -18,7 +18,7 @@ export declare function SuspenseList(props: {
18
18
  * <AsyncComponent />
19
19
  * </Suspense>
20
20
  * ```
21
- * @description https://www.solidjs.com/docs/latest/api#%3Csuspense%3E
21
+ * @description https://www.solidjs.com/docs/latest/api#suspense
22
22
  */
23
23
  export declare function Suspense(props: {
24
24
  fallback?: JSX.Element;
@@ -4,13 +4,13 @@ export declare function enableHydration(): void;
4
4
  * A general `Component` has no implicit `children` prop. If desired, you can
5
5
  * specify one as in `Component<{name: String, children: JSX.Element}>`.
6
6
  */
7
- export declare type Component<P = {}> = (props: P) => JSX.Element;
7
+ export type Component<P = {}> = (props: P) => JSX.Element;
8
8
  /**
9
9
  * Extend props to forbid the `children` prop.
10
10
  * Use this to prevent accidentally passing `children` to components that
11
11
  * would silently throw them away.
12
12
  */
13
- export declare type VoidProps<P = {}> = P & {
13
+ export type VoidProps<P = {}> = P & {
14
14
  children?: never;
15
15
  };
16
16
  /**
@@ -18,13 +18,13 @@ export declare type VoidProps<P = {}> = P & {
18
18
  * Use this to prevent accidentally passing `children` to components that
19
19
  * would silently throw them away.
20
20
  */
21
- export declare type VoidComponent<P = {}> = Component<VoidProps<P>>;
21
+ export type VoidComponent<P = {}> = Component<VoidProps<P>>;
22
22
  /**
23
23
  * Extend props to allow an optional `children` prop with the usual
24
24
  * type in JSX, `JSX.Element` (which allows elements, arrays, functions, etc.).
25
25
  * Use this for components that you want to accept children.
26
26
  */
27
- export declare type ParentProps<P = {}> = P & {
27
+ export type ParentProps<P = {}> = P & {
28
28
  children?: JSX.Element;
29
29
  };
30
30
  /**
@@ -32,14 +32,14 @@ export declare type ParentProps<P = {}> = P & {
32
32
  * type in JSX, `JSX.Element` (which allows elements, arrays, functions, etc.).
33
33
  * Use this for components that you want to accept children.
34
34
  */
35
- export declare type ParentComponent<P = {}> = Component<ParentProps<P>>;
35
+ export type ParentComponent<P = {}> = Component<ParentProps<P>>;
36
36
  /**
37
37
  * Extend props to require a `children` prop with the specified type.
38
38
  * Use this for components where you need a specific child type,
39
39
  * typically a function that receives specific argument types.
40
40
  * Note that all JSX <Elements> are of the type `JSX.Element`.
41
41
  */
42
- export declare type FlowProps<P = {}, C = JSX.Element> = P & {
42
+ export type FlowProps<P = {}, C = JSX.Element> = P & {
43
43
  children: C;
44
44
  };
45
45
  /**
@@ -48,10 +48,10 @@ export declare type FlowProps<P = {}, C = JSX.Element> = P & {
48
48
  * typically a function that receives specific argument types.
49
49
  * Note that all JSX <Elements> are of the type `JSX.Element`.
50
50
  */
51
- export declare type FlowComponent<P = {}, C = JSX.Element> = Component<FlowProps<P, C>>;
51
+ export type FlowComponent<P = {}, C = JSX.Element> = Component<FlowProps<P, C>>;
52
52
  /** @deprecated: use `ParentProps` instead */
53
- export declare type PropsWithChildren<P = {}> = ParentProps<P>;
54
- export declare type ValidComponent = keyof JSX.IntrinsicElements | Component<any> | (string & {});
53
+ export type PropsWithChildren<P = {}> = ParentProps<P>;
54
+ export type ValidComponent = keyof JSX.IntrinsicElements | Component<any> | (string & {});
55
55
  /**
56
56
  * Takes the props of the passed component and returns its type
57
57
  *
@@ -59,21 +59,21 @@ export declare type ValidComponent = keyof JSX.IntrinsicElements | Component<any
59
59
  * ComponentProps<typeof Portal> // { mount?: Node; useShadow?: boolean; children: JSX.Element }
60
60
  * ComponentProps<'div'> // JSX.HTMLAttributes<HTMLDivElement>
61
61
  */
62
- export declare type ComponentProps<T extends ValidComponent> = T extends Component<infer P> ? P : T extends keyof JSX.IntrinsicElements ? JSX.IntrinsicElements[T] : Record<string, unknown>;
62
+ export type ComponentProps<T extends ValidComponent> = T extends Component<infer P> ? P : T extends keyof JSX.IntrinsicElements ? JSX.IntrinsicElements[T] : Record<string, unknown>;
63
63
  /**
64
64
  * Type of `props.ref`, for use in `Component` or `props` typing.
65
65
  *
66
66
  * @example Component<{ref: Ref<Element>}>
67
67
  */
68
- export declare type Ref<T> = T | ((val: T) => void);
68
+ export type Ref<T> = T | ((val: T) => void);
69
69
  export declare function createComponent<T>(Comp: Component<T>, props: T): JSX.Element;
70
- declare type DistributeOverride<T, F> = T extends undefined ? F : T;
71
- declare type Override<T, U> = T extends any ? U extends any ? {
70
+ type DistributeOverride<T, F> = T extends undefined ? F : T;
71
+ type Override<T, U> = T extends any ? U extends any ? {
72
72
  [K in keyof T]: K extends keyof U ? DistributeOverride<U[K], T[K]> : T[K];
73
73
  } & {
74
74
  [K in keyof U]: K extends keyof T ? DistributeOverride<U[K], T[K]> : U[K];
75
75
  } : T & U : T & U;
76
- declare type OverrideSpread<T, U> = T extends any ? {
76
+ type OverrideSpread<T, U> = T extends any ? {
77
77
  [K in keyof ({
78
78
  [K in keyof T]: any;
79
79
  } & {
@@ -82,16 +82,16 @@ declare type OverrideSpread<T, U> = T extends any ? {
82
82
  [K in U extends any ? keyof U : keyof U]?: any;
83
83
  })]: K extends keyof T ? Exclude<U extends any ? U[K & keyof U] : never, undefined> | T[K] : U extends any ? U[K & keyof U] : never;
84
84
  } : T & U;
85
- declare type Simplify<T> = T extends any ? {
85
+ type Simplify<T> = T extends any ? {
86
86
  [K in keyof T]: T[K];
87
87
  } : T;
88
- declare type _MergeProps<T extends unknown[], Curr = {}> = T extends [
88
+ type _MergeProps<T extends unknown[], Curr = {}> = T extends [
89
89
  infer Next | (() => infer Next),
90
90
  ...infer Rest
91
91
  ] ? _MergeProps<Rest, Override<Curr, Next>> : T extends [...infer Rest, infer Next | (() => infer Next)] ? Override<_MergeProps<Rest, Curr>, Next> : T extends [] ? Curr : T extends (infer I | (() => infer I))[] ? OverrideSpread<Curr, I> : Curr;
92
- export declare type MergeProps<T extends unknown[]> = Simplify<_MergeProps<T>>;
92
+ export type MergeProps<T extends unknown[]> = Simplify<_MergeProps<T>>;
93
93
  export declare function mergeProps<T extends unknown[]>(...sources: T): MergeProps<T>;
94
- export declare type SplitProps<T, K extends (readonly (keyof T)[])[]> = [
94
+ export type SplitProps<T, K extends (readonly (keyof T)[])[]> = [
95
95
  ...{
96
96
  [P in keyof K]: P extends `${number}` ? Pick<T, Extract<K[P], readonly (keyof T)[]>[number]> : never;
97
97
  },
@@ -11,7 +11,7 @@ import type { JSX } from "../jsx.js";
11
11
  * ```
12
12
  * If you have a list with fixed indices and changing values, consider using `<Index>` instead.
13
13
  *
14
- * @description https://www.solidjs.com/docs/latest/api#%3Cfor%3E
14
+ * @description https://www.solidjs.com/docs/latest/api#for
15
15
  */
16
16
  export declare function For<T extends readonly any[], U extends JSX.Element>(props: {
17
17
  each: T | undefined | null | false;
@@ -29,7 +29,7 @@ export declare function For<T extends readonly any[], U extends JSX.Element>(pro
29
29
  * ```
30
30
  * If you have a list with changing indices, better use `<For>`.
31
31
  *
32
- * @description https://www.solidjs.com/docs/latest/api#%3Cindex%3E
32
+ * @description https://www.solidjs.com/docs/latest/api#index
33
33
  */
34
34
  export declare function Index<T extends readonly any[], U extends JSX.Element>(props: {
35
35
  each: T | undefined | null | false;
@@ -38,7 +38,7 @@ export declare function Index<T extends readonly any[], U extends JSX.Element>(p
38
38
  }): Accessor<U[]>;
39
39
  /**
40
40
  * Conditionally render its children or an optional fallback component
41
- * @description https://www.solidjs.com/docs/latest/api#%3Cshow%3E
41
+ * @description https://www.solidjs.com/docs/latest/api#show
42
42
  */
43
43
  export declare function Show<T>(props: {
44
44
  when: T | undefined | null | false;
@@ -64,13 +64,13 @@ export declare function Show<T>(props: {
64
64
  * </Match>
65
65
  * </Switch>
66
66
  * ```
67
- * @description https://www.solidjs.com/docs/latest/api#%3Cswitch%3E%2F%3Cmatch%3E
67
+ * @description https://www.solidjs.com/docs/latest/api#switchmatch
68
68
  */
69
69
  export declare function Switch(props: {
70
70
  fallback?: JSX.Element;
71
71
  children: JSX.Element;
72
72
  }): Accessor<JSX.Element>;
73
- export declare type MatchProps<T> = {
73
+ export type MatchProps<T> = {
74
74
  when: T | undefined | null | false;
75
75
  keyed?: boolean;
76
76
  children: JSX.Element | ((item: NonNullable<T>) => JSX.Element);
@@ -82,7 +82,7 @@ export declare type MatchProps<T> = {
82
82
  * <Content/>
83
83
  * </Match>
84
84
  * ```
85
- * @description https://www.solidjs.com/docs/latest/api#%3Cswitch%3E%2F%3Cmatch%3E
85
+ * @description https://www.solidjs.com/docs/latest/api#switchmatch
86
86
  */
87
87
  export declare function Match<T>(props: {
88
88
  when: T | undefined | null | false;
@@ -108,7 +108,7 @@ export declare function resetErrorBoundaries(): void;
108
108
  * ```
109
109
  * Errors thrown from the fallback can be caught by a parent ErrorBoundary
110
110
  *
111
- * @description https://www.solidjs.com/docs/latest/api#%3Cerrorboundary%3E
111
+ * @description https://www.solidjs.com/docs/latest/api#errorboundary
112
112
  */
113
113
  export declare function ErrorBoundary(props: {
114
114
  fallback: JSX.Element | ((err: any, reset: () => void) => JSX.Element);
@@ -1,8 +1,8 @@
1
- export declare type HydrationContext = {
1
+ export type HydrationContext = {
2
2
  id: string;
3
3
  count: number;
4
4
  };
5
- declare type SharedConfig = {
5
+ type SharedConfig = {
6
6
  context?: HydrationContext;
7
7
  resources?: {
8
8
  [key: string]: any;
@@ -3,9 +3,9 @@ export declare const $PROXY: unique symbol;
3
3
  export declare const $TRACK: unique symbol;
4
4
  export declare const $DEVCOMP: unique symbol;
5
5
  export declare const DEV: {};
6
- export declare type Accessor<T> = () => T;
7
- export declare type Setter<T> = undefined extends T ? <U extends T>(value?: (U extends Function ? never : U) | ((prev?: T) => U)) => U : <U extends T>(value: (U extends Function ? never : U) | ((prev: T) => U)) => U;
8
- export declare type Signal<T> = [get: Accessor<T>, set: Setter<T>];
6
+ export type Accessor<T> = () => T;
7
+ export type Setter<T> = undefined extends T ? <U extends T>(value?: (U extends Function ? never : U) | ((prev?: T) => U)) => U : <U extends T>(value: (U extends Function ? never : U) | ((prev: T) => U)) => U;
8
+ export type Signal<T> = [get: Accessor<T>, set: Setter<T>];
9
9
  export declare const BRANCH: unique symbol;
10
10
  export declare function castError(err: any): string | Error;
11
11
  export declare let Owner: Owner | null;
@@ -13,7 +13,7 @@ interface Owner {
13
13
  owner: Owner | null;
14
14
  context: any | null;
15
15
  }
16
- export declare function createRoot<T>(fn: (dispose: () => void) => T, detachedOwner?: Owner): T;
16
+ export declare function createRoot<T>(fn: (dispose: () => void) => T, detachedOwner?: typeof Owner): T;
17
17
  export declare function createSignal<T>(value: T, options?: {
18
18
  equals?: false | ((prev: T, next: T) => boolean);
19
19
  name?: string;
@@ -48,11 +48,11 @@ export interface Context<T> {
48
48
  export declare function createContext<T>(defaultValue?: T): Context<T>;
49
49
  export declare function useContext<T>(context: Context<T>): T;
50
50
  export declare function getOwner(): Owner | null;
51
- declare type ChildrenReturn = Accessor<any> & {
51
+ type ChildrenReturn = Accessor<any> & {
52
52
  toArray: () => any[];
53
53
  };
54
54
  export declare function children(fn: () => any): ChildrenReturn;
55
- export declare function runWithOwner<T>(o: Owner, fn: () => T): T | undefined;
55
+ export declare function runWithOwner<T>(o: typeof Owner, fn: () => T): T | undefined;
56
56
  export declare function lookup(owner: Owner | null, key: symbol | string): any;
57
57
  export interface Task {
58
58
  id: number;
@@ -67,7 +67,7 @@ export declare function cancelCallback(task: Task): void;
67
67
  export declare function mapArray<T, U>(list: () => T[], mapFn: (v: T, i: () => number) => U, options?: {
68
68
  fallback?: () => any;
69
69
  }): () => U[];
70
- export declare type ObservableObserver<T> = ((v: T) => void) | {
70
+ export type ObservableObserver<T> = ((v: T) => void) | {
71
71
  next: (v: T) => void;
72
72
  error?: (v: any) => void;
73
73
  complete?: (v: boolean) => void;
@@ -1,22 +1,22 @@
1
1
  import { Setter, Signal } from "./reactive.js";
2
2
  import type { JSX } from "../jsx.js";
3
- export declare type Component<P = {}> = (props: P) => JSX.Element;
4
- export declare type VoidProps<P = {}> = P & {
3
+ export type Component<P = {}> = (props: P) => JSX.Element;
4
+ export type VoidProps<P = {}> = P & {
5
5
  children?: never;
6
6
  };
7
- export declare type VoidComponent<P = {}> = Component<VoidProps<P>>;
8
- export declare type ParentProps<P = {}> = P & {
7
+ export type VoidComponent<P = {}> = Component<VoidProps<P>>;
8
+ export type ParentProps<P = {}> = P & {
9
9
  children?: JSX.Element;
10
10
  };
11
- export declare type ParentComponent<P = {}> = Component<ParentProps<P>>;
12
- export declare type FlowProps<P = {}, C = JSX.Element> = P & {
11
+ export type ParentComponent<P = {}> = Component<ParentProps<P>>;
12
+ export type FlowProps<P = {}, C = JSX.Element> = P & {
13
13
  children: C;
14
14
  };
15
- export declare type FlowComponent<P = {}, C = JSX.Element> = Component<FlowProps<P, C>>;
16
- export declare type Ref<T> = T | ((val: T) => void);
17
- export declare type ValidComponent = keyof JSX.IntrinsicElements | Component<any> | (string & {});
18
- export declare type ComponentProps<T extends ValidComponent> = T extends Component<infer P> ? P : T extends keyof JSX.IntrinsicElements ? JSX.IntrinsicElements[T] : Record<string, unknown>;
19
- declare type SharedConfig = {
15
+ export type FlowComponent<P = {}, C = JSX.Element> = Component<FlowProps<P, C>>;
16
+ export type Ref<T> = T | ((val: T) => void);
17
+ export type ValidComponent = keyof JSX.IntrinsicElements | Component<any> | (string & {});
18
+ export type ComponentProps<T extends ValidComponent> = T extends Component<infer P> ? P : T extends keyof JSX.IntrinsicElements ? JSX.IntrinsicElements[T] : Record<string, unknown>;
19
+ type SharedConfig = {
20
20
  context?: HydrationContext;
21
21
  };
22
22
  export declare const sharedConfig: SharedConfig;
@@ -57,7 +57,7 @@ export declare function Switch(props: {
57
57
  fallback?: string;
58
58
  children: MatchProps<unknown> | MatchProps<unknown>[];
59
59
  }): string;
60
- declare type MatchProps<T> = {
60
+ type MatchProps<T> = {
61
61
  when: T | false;
62
62
  keyed?: boolean;
63
63
  children: string | ((item: T) => string);
@@ -77,25 +77,25 @@ export interface Resource<T> {
77
77
  error: any;
78
78
  latest: T | undefined;
79
79
  }
80
- declare type SuspenseContextType = {
80
+ type SuspenseContextType = {
81
81
  resources: Map<string, {
82
82
  loading: boolean;
83
83
  error: any;
84
84
  }>;
85
85
  completed: () => void;
86
86
  };
87
- export declare type ResourceActions<T> = {
87
+ export type ResourceActions<T> = {
88
88
  mutate: Setter<T>;
89
89
  refetch: (info?: unknown) => void;
90
90
  };
91
- export declare type ResourceReturn<T> = [Resource<T>, ResourceActions<T>];
92
- export declare type ResourceSource<S> = S | false | null | undefined | (() => S | false | null | undefined);
93
- export declare type ResourceFetcher<S, T> = (k: S, info: ResourceFetcherInfo<T>) => T | Promise<T>;
94
- export declare type ResourceFetcherInfo<T> = {
91
+ export type ResourceReturn<T> = [Resource<T>, ResourceActions<T>];
92
+ export type ResourceSource<S> = S | false | null | undefined | (() => S | false | null | undefined);
93
+ export type ResourceFetcher<S, T> = (k: S, info: ResourceFetcherInfo<T>) => T | Promise<T>;
94
+ export type ResourceFetcherInfo<T> = {
95
95
  value: T | undefined;
96
96
  refetching?: unknown;
97
97
  };
98
- export declare type ResourceOptions<T> = undefined extends T ? {
98
+ export type ResourceOptions<T> = undefined extends T ? {
99
99
  initialValue?: T;
100
100
  name?: string;
101
101
  deferStream?: boolean;
@@ -125,7 +125,7 @@ export declare function enableScheduling(): void;
125
125
  export declare function enableHydration(): void;
126
126
  export declare function startTransition(fn: () => any): void;
127
127
  export declare function useTransition(): [() => boolean, (fn: () => any) => void];
128
- declare type HydrationContext = {
128
+ type HydrationContext = {
129
129
  id: string;
130
130
  count: number;
131
131
  writeResource: (id: string, v: Promise<any> | any, error?: boolean, deferStream?: boolean) => void;
@@ -261,6 +261,7 @@ function toRefParam(index) {
261
261
  return ref;
262
262
  }
263
263
 
264
+ const VOID_ELEMENTS = /^(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)$/i;
264
265
  const REPLACE_SCRIPT = `function $df(e,t,n,o,d){if(n=document.getElementById(e),o=document.getElementById("pl-"+e)){for(;o&&8!==o.nodeType&&o.nodeValue!=="pl-"+e;)d=o.nextSibling,o.remove(),o=d;o.replaceWith(n.content)}n.remove(),_$HY.set(e,t),_$HY.fe(e)}`;
265
266
  function renderToString(code, options = {}) {
266
267
  let scripts = "";
@@ -522,13 +523,14 @@ function ssrStyle(value) {
522
523
  }
523
524
  function ssrElement(tag, props, children, needsId) {
524
525
  let result = `<${tag}${needsId ? ssrHydrationKey() : ""} `;
526
+ const skipChildren = VOID_ELEMENTS.test(tag);
525
527
  if (props == null) props = {};else if (typeof props === "function") props = props();
526
528
  const keys = Object.keys(props);
527
529
  let classResolved;
528
530
  for (let i = 0; i < keys.length; i++) {
529
531
  const prop = keys[i];
530
532
  if (ChildProperties.has(prop)) {
531
- if (children === undefined) children = prop === "innerHTML" ? props[prop] : escape(props[prop]);
533
+ if (children === undefined && !skipChildren) children = prop === "innerHTML" ? props[prop] : escape(props[prop]);
532
534
  continue;
533
535
  }
534
536
  const value = props[prop];
@@ -548,6 +550,11 @@ function ssrElement(tag, props, children, needsId) {
548
550
  }
549
551
  if (i !== keys.length - 1) result += " ";
550
552
  }
553
+ if (skipChildren) {
554
+ return {
555
+ t: result + '/>'
556
+ };
557
+ }
551
558
  return {
552
559
  t: result + `>${resolveSSRNode(children)}</${tag}>`
553
560
  };
@@ -260,6 +260,7 @@ function toRefParam(index) {
260
260
  return ref;
261
261
  }
262
262
 
263
+ const VOID_ELEMENTS = /^(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)$/i;
263
264
  const REPLACE_SCRIPT = `function $df(e,t,n,o,d){if(n=document.getElementById(e),o=document.getElementById("pl-"+e)){for(;o&&8!==o.nodeType&&o.nodeValue!=="pl-"+e;)d=o.nextSibling,o.remove(),o=d;o.replaceWith(n.content)}n.remove(),_$HY.set(e,t),_$HY.fe(e)}`;
264
265
  function renderToString(code, options = {}) {
265
266
  let scripts = "";
@@ -521,13 +522,14 @@ function ssrStyle(value) {
521
522
  }
522
523
  function ssrElement(tag, props, children, needsId) {
523
524
  let result = `<${tag}${needsId ? ssrHydrationKey() : ""} `;
525
+ const skipChildren = VOID_ELEMENTS.test(tag);
524
526
  if (props == null) props = {};else if (typeof props === "function") props = props();
525
527
  const keys = Object.keys(props);
526
528
  let classResolved;
527
529
  for (let i = 0; i < keys.length; i++) {
528
530
  const prop = keys[i];
529
531
  if (ChildProperties.has(prop)) {
530
- if (children === undefined) children = prop === "innerHTML" ? props[prop] : escape(props[prop]);
532
+ if (children === undefined && !skipChildren) children = prop === "innerHTML" ? props[prop] : escape(props[prop]);
531
533
  continue;
532
534
  }
533
535
  const value = props[prop];
@@ -547,6 +549,11 @@ function ssrElement(tag, props, children, needsId) {
547
549
  }
548
550
  if (i !== keys.length - 1) result += " ";
549
551
  }
552
+ if (skipChildren) {
553
+ return {
554
+ t: result + '/>'
555
+ };
556
+ }
550
557
  return {
551
558
  t: result + `>${resolveSSRNode(children)}</${tag}>`
552
559
  };
@@ -10,7 +10,7 @@ export declare const hydrate: typeof hydrateCore;
10
10
  *
11
11
  * Useful for inserting modals and tooltips outside of an cropping layout. If no mount point is given, the portal is inserted in document.body; it is wrapped in a `<div>` unless the target is document.head or `isSVG` is true. setting `useShadow` to true places the element in a shadow root to isolate styles.
12
12
  *
13
- * @description https://www.solidjs.com/docs/latest/api#%3Cportal%3E
13
+ * @description https://www.solidjs.com/docs/latest/api#portal
14
14
  */
15
15
  export declare function Portal<T extends boolean = false, S extends boolean = false>(props: {
16
16
  mount?: Node;
@@ -21,7 +21,7 @@ export declare function Portal<T extends boolean = false, S extends boolean = fa
21
21
  } : {}) & (S extends true ? SVGGElement : HTMLDivElement)) => void);
22
22
  children: JSX.Element;
23
23
  }): Text;
24
- declare type DynamicProps<T extends ValidComponent, P = ComponentProps<T>> = {
24
+ export type DynamicProps<T extends ValidComponent, P = ComponentProps<T>> = {
25
25
  [K in keyof P]: P[K];
26
26
  } & {
27
27
  component: T | undefined;
@@ -31,6 +31,6 @@ declare type DynamicProps<T extends ValidComponent, P = ComponentProps<T>> = {
31
31
  * ```typescript
32
32
  * <Dynamic component={multiline() ? 'textarea' : 'input'} value={value()} />
33
33
  * ```
34
- * @description https://www.solidjs.com/docs/latest/api#%3Cdynamic%3E
34
+ * @description https://www.solidjs.com/docs/latest/api#dynamic
35
35
  */
36
36
  export declare function Dynamic<T extends ValidComponent>(props: DynamicProps<T>): Accessor<JSX.Element>;
@@ -42,7 +42,7 @@ export declare function escape(html: string): string;
42
42
  * @deprecated Replaced by ssrElement
43
43
  */
44
44
  export declare function ssrSpread(props: any, isSVG: boolean, skipChildren: boolean): void;
45
- export declare type LegacyResults = {
45
+ export type LegacyResults = {
46
46
  startWriting: () => void;
47
47
  };
48
48
  /**