solid-js 1.3.17 → 1.4.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -23,18 +23,13 @@ declare type UnboxIntersection<T> = T extends {
23
23
  } ? U : never;
24
24
  declare type MergeProps<T extends any[]> = UnboxIntersection<UnionToIntersection<BoxedTupleTypes<T>>>;
25
25
  export declare function mergeProps<T extends any[]>(...sources: T): MergeProps<T>;
26
- export declare function splitProps<T extends object, K1 extends keyof T>(props: T, ...keys: [K1[]]): [Pick<T, K1>, Omit<T, K1>];
27
- export declare function splitProps<T extends object, K1 extends keyof T, K2 extends keyof T>(props: T, ...keys: [K1[], K2[]]): [Pick<T, K1>, Pick<T, K2>, Omit<T, K1 | K2>];
28
- export declare function splitProps<T extends object, K1 extends keyof T, K2 extends keyof T, K3 extends keyof T>(props: T, ...keys: [K1[], K2[], K3[]]): [Pick<T, K1>, Pick<T, K2>, Pick<T, K3>, Omit<T, K1 | K2 | K3>];
29
- export declare function splitProps<T extends object, K1 extends keyof T, K2 extends keyof T, K3 extends keyof T, K4 extends keyof T>(props: T, ...keys: [K1[], K2[], K3[], K4[]]): [Pick<T, K1>, Pick<T, K2>, Pick<T, K3>, Pick<T, K4>, Omit<T, K1 | K2 | K3 | K4>];
30
- export declare function splitProps<T extends object, K1 extends keyof T, K2 extends keyof T, K3 extends keyof T, K4 extends keyof T, K5 extends keyof T>(props: T, ...keys: [K1[], K2[], K3[], K4[], K5[]]): [
31
- Pick<T, K1>,
32
- Pick<T, K2>,
33
- Pick<T, K3>,
34
- Pick<T, K4>,
35
- Pick<T, K5>,
36
- Omit<T, K1 | K2 | K3 | K4 | K5>
26
+ declare type SplitProps<T, K extends (readonly (keyof T)[])[]> = [
27
+ ...{
28
+ [P in keyof K]: P extends `${number}` ? Pick<T, Extract<K[P], readonly (keyof T)[]>[number]> : K[P];
29
+ },
30
+ Omit<T, K[number][number]>
37
31
  ];
32
+ export declare function splitProps<T, K extends [readonly (keyof T)[], ...(readonly (keyof T)[])[]]>(props: T, ...keys: K): SplitProps<T, K>;
38
33
  export declare function lazy<T extends Component<any>>(fn: () => Promise<{
39
34
  default: T;
40
35
  }>): T & {
@@ -1,3 +1,3 @@
1
1
  export { createRoot, createSignal, createComputed, createRenderEffect, createEffect, createReaction, createDeferred, createSelector, createMemo, getListener, onMount, onCleanup, onError, untrack, batch, on, children, createContext, useContext, getOwner, runWithOwner, equalFn, requestCallback, mapArray, observable, from, $PROXY, $DEVCOMP, DEV, enableExternalSource } from "./reactive";
2
- export { mergeProps, splitProps, createComponent, For, Index, Show, Switch, Match, ErrorBoundary, Suspense, SuspenseList, createResource, refetchResources, resetErrorBoundaries, enableScheduling, enableHydration, startTransition, useTransition, createUniqueId, lazy, sharedConfig } from "./rendering";
2
+ export { mergeProps, splitProps, createComponent, For, Index, Show, Switch, Match, ErrorBoundary, Suspense, SuspenseList, createResource, resetErrorBoundaries, enableScheduling, enableHydration, startTransition, useTransition, createUniqueId, lazy, sharedConfig } from "./rendering";
3
3
  export type { Component, Resource } from "./rendering";
@@ -61,6 +61,7 @@ export interface Resource<T> {
61
61
  (): T | undefined;
62
62
  loading: boolean;
63
63
  error: any;
64
+ latest: T | undefined;
64
65
  }
65
66
  declare type SuspenseContextType = {
66
67
  resources: Map<string, {
@@ -83,19 +84,16 @@ export declare type ResourceFetcherInfo<T> = {
83
84
  export declare type ResourceOptions<T> = undefined extends T ? {
84
85
  initialValue?: T;
85
86
  name?: string;
86
- globalRefetch?: boolean;
87
87
  onHydrated?: <S, T>(k: S, info: ResourceFetcherInfo<T>) => void;
88
88
  } : {
89
89
  initialValue: T;
90
90
  name?: string;
91
- globalRefetch?: boolean;
92
91
  onHydrated?: <S, T>(k: S, info: ResourceFetcherInfo<T>) => void;
93
92
  };
94
93
  export declare function createResource<T, S = true>(fetcher: ResourceFetcher<S, T>, options?: ResourceOptions<undefined>): ResourceReturn<T | undefined>;
95
94
  export declare function createResource<T, S = true>(fetcher: ResourceFetcher<S, T>, options: ResourceOptions<T>): ResourceReturn<T>;
96
95
  export declare function createResource<T, S>(source: ResourceSource<S>, fetcher: ResourceFetcher<S, T>, options?: ResourceOptions<undefined>): ResourceReturn<T | undefined>;
97
96
  export declare function createResource<T, S>(source: ResourceSource<S>, fetcher: ResourceFetcher<S, T>, options: ResourceOptions<T>): ResourceReturn<T>;
98
- export declare function refetchResources(info?: unknown): void;
99
97
  export declare function lazy(fn: () => Promise<{
100
98
  default: any;
101
99
  }>): (props: any) => string;
package/web/dist/dev.cjs CHANGED
@@ -136,6 +136,9 @@ function setAttribute(node, name, value) {
136
136
  function setAttributeNS(node, namespace, name, value) {
137
137
  if (value == null) node.removeAttributeNS(namespace, name);else node.setAttributeNS(namespace, name, value);
138
138
  }
139
+ function className(node, value) {
140
+ if (value == null) node.removeAttribute("class");else node.className = value;
141
+ }
139
142
  function addEventListener(node, name, handler, delegate) {
140
143
  if (delegate) {
141
144
  if (Array.isArray(handler)) {
@@ -316,7 +319,7 @@ function assignProp(node, prop, value, prev, isSVG, skipRef) {
316
319
  addEventListener(node, name, value, delegate);
317
320
  delegate && delegateEvents([name]);
318
321
  } else if ((isChildProp = ChildProperties.has(prop)) || !isSVG && (PropAliases[prop] || (isProp = Properties.has(prop))) || (isCE = node.nodeName.includes("-"))) {
319
- if (isCE && !isProp && !isChildProp) node[toPropertyName(prop)] = value;else node[PropAliases[prop] || prop] = value;
322
+ if (prop === "class" || prop === "className") className(node, value);else if (isCE && !isProp && !isChildProp) node[toPropertyName(prop)] = value;else node[PropAliases[prop] || prop] = value;
320
323
  } else {
321
324
  const ns = isSVG && prop.indexOf(":") > -1 && SVGNamespace[prop.split(":")[0]];
322
325
  if (ns) setAttributeNS(node, ns, prop, value);else setAttribute(node, Aliases[prop] || prop, value);
@@ -639,6 +642,7 @@ exports.SVGNamespace = SVGNamespace;
639
642
  exports.addEventListener = addEventListener;
640
643
  exports.assign = assign;
641
644
  exports.classList = classList;
645
+ exports.className = className;
642
646
  exports.clearDelegatedEvents = clearDelegatedEvents;
643
647
  exports.delegateEvents = delegateEvents;
644
648
  exports.dynamicProperty = dynamicProperty;
package/web/dist/dev.js CHANGED
@@ -133,6 +133,9 @@ function setAttribute(node, name, value) {
133
133
  function setAttributeNS(node, namespace, name, value) {
134
134
  if (value == null) node.removeAttributeNS(namespace, name);else node.setAttributeNS(namespace, name, value);
135
135
  }
136
+ function className(node, value) {
137
+ if (value == null) node.removeAttribute("class");else node.className = value;
138
+ }
136
139
  function addEventListener(node, name, handler, delegate) {
137
140
  if (delegate) {
138
141
  if (Array.isArray(handler)) {
@@ -313,7 +316,7 @@ function assignProp(node, prop, value, prev, isSVG, skipRef) {
313
316
  addEventListener(node, name, value, delegate);
314
317
  delegate && delegateEvents([name]);
315
318
  } else if ((isChildProp = ChildProperties.has(prop)) || !isSVG && (PropAliases[prop] || (isProp = Properties.has(prop))) || (isCE = node.nodeName.includes("-"))) {
316
- if (isCE && !isProp && !isChildProp) node[toPropertyName(prop)] = value;else node[PropAliases[prop] || prop] = value;
319
+ if (prop === "class" || prop === "className") className(node, value);else if (isCE && !isProp && !isChildProp) node[toPropertyName(prop)] = value;else node[PropAliases[prop] || prop] = value;
317
320
  } else {
318
321
  const ns = isSVG && prop.indexOf(":") > -1 && SVGNamespace[prop.split(":")[0]];
319
322
  if (ns) setAttributeNS(node, ns, prop, value);else setAttribute(node, Aliases[prop] || prop, value);
@@ -572,4 +575,4 @@ function Dynamic(props) {
572
575
  });
573
576
  }
574
577
 
575
- export { Aliases, Assets, ChildProperties, DOMElements, DelegatedEvents, Dynamic, Assets as HydrationScript, NoHydration, Portal, PropAliases, Properties, SVGElements, SVGNamespace, addEventListener, assign, classList, clearDelegatedEvents, delegateEvents, dynamicProperty, escape, generateHydrationScript, getHydrationKey, getNextElement, getNextMarker, getNextMatch, hydrate, innerHTML, insert, isServer, memo, render, renderToStream, renderToString, renderToStringAsync, resolveSSRNode, runHydrationEvents, setAttribute, setAttributeNS, spread, ssr, ssrBoolean, ssrClassList, ssrHydrationKey, ssrSpread, ssrStyle, style, template };
578
+ export { Aliases, Assets, ChildProperties, DOMElements, DelegatedEvents, Dynamic, Assets as HydrationScript, NoHydration, Portal, PropAliases, Properties, SVGElements, SVGNamespace, addEventListener, assign, classList, className, clearDelegatedEvents, delegateEvents, dynamicProperty, escape, generateHydrationScript, getHydrationKey, getNextElement, getNextMarker, getNextMatch, hydrate, innerHTML, insert, isServer, memo, render, renderToStream, renderToString, renderToStringAsync, resolveSSRNode, runHydrationEvents, setAttribute, setAttributeNS, spread, ssr, ssrBoolean, ssrClassList, ssrHydrationKey, ssrSpread, ssrStyle, style, template };
@@ -496,9 +496,10 @@ function ssrStyle(value) {
496
496
  return result;
497
497
  }
498
498
  function ssrSpread(props, isSVG, skipChildren) {
499
+ let result = "";
500
+ if (props == null) return results;
499
501
  if (typeof props === "function") props = props();
500
502
  const keys = Object.keys(props);
501
- let result = "";
502
503
  let classResolved;
503
504
  for (let i = 0; i < keys.length; i++) {
504
505
  const prop = keys[i];
@@ -516,7 +517,7 @@ function ssrSpread(props, isSVG, skipChildren) {
516
517
  classResolved = true;
517
518
  } else if (BooleanAttributes.has(prop)) {
518
519
  if (value) result += prop;else continue;
519
- } else if (prop === "ref" || prop.slice(0, 2) === "on") {
520
+ } else if (value == undefined || prop === "ref" || prop.slice(0, 2) === "on") {
520
521
  continue;
521
522
  } else {
522
523
  result += `${Aliases[prop] || prop}="${escape(value, true)}"`;
@@ -525,8 +526,8 @@ function ssrSpread(props, isSVG, skipChildren) {
525
526
  }
526
527
  return result;
527
528
  }
528
- function ssrBoolean(key, value) {
529
- return value ? " " + key : "";
529
+ function ssrAttribute(key, value, isBoolean) {
530
+ return isBoolean ? value ? " " + key : "" : value != null ? ` ${key}="${value}"` : "";
530
531
  }
531
532
  function ssrHydrationKey() {
532
533
  const hk = getHydrationKey();
@@ -748,7 +749,7 @@ exports.renderToStringAsync = renderToStringAsync;
748
749
  exports.resolveSSRNode = resolveSSRNode;
749
750
  exports.spread = spread;
750
751
  exports.ssr = ssr;
751
- exports.ssrBoolean = ssrBoolean;
752
+ exports.ssrAttribute = ssrAttribute;
752
753
  exports.ssrClassList = ssrClassList;
753
754
  exports.ssrHydrationKey = ssrHydrationKey;
754
755
  exports.ssrSpread = ssrSpread;
@@ -493,9 +493,10 @@ function ssrStyle(value) {
493
493
  return result;
494
494
  }
495
495
  function ssrSpread(props, isSVG, skipChildren) {
496
+ let result = "";
497
+ if (props == null) return results;
496
498
  if (typeof props === "function") props = props();
497
499
  const keys = Object.keys(props);
498
- let result = "";
499
500
  let classResolved;
500
501
  for (let i = 0; i < keys.length; i++) {
501
502
  const prop = keys[i];
@@ -513,7 +514,7 @@ function ssrSpread(props, isSVG, skipChildren) {
513
514
  classResolved = true;
514
515
  } else if (BooleanAttributes.has(prop)) {
515
516
  if (value) result += prop;else continue;
516
- } else if (prop === "ref" || prop.slice(0, 2) === "on") {
517
+ } else if (value == undefined || prop === "ref" || prop.slice(0, 2) === "on") {
517
518
  continue;
518
519
  } else {
519
520
  result += `${Aliases[prop] || prop}="${escape(value, true)}"`;
@@ -522,8 +523,8 @@ function ssrSpread(props, isSVG, skipChildren) {
522
523
  }
523
524
  return result;
524
525
  }
525
- function ssrBoolean(key, value) {
526
- return value ? " " + key : "";
526
+ function ssrAttribute(key, value, isBoolean) {
527
+ return isBoolean ? value ? " " + key : "" : value != null ? ` ${key}="${value}"` : "";
527
528
  }
528
529
  function ssrHydrationKey() {
529
530
  const hk = getHydrationKey();
@@ -688,4 +689,4 @@ function Portal(props) {
688
689
  return "";
689
690
  }
690
691
 
691
- export { Assets, Dynamic, HydrationScript, NoHydration, Portal, escape, generateHydrationScript, getHydrationKey, isServer, pipeToNodeWritable, pipeToWritable, renderToStream, renderToString, renderToStringAsync, resolveSSRNode, spread, ssr, ssrBoolean, ssrClassList, ssrHydrationKey, ssrSpread, ssrStyle };
692
+ export { Assets, Dynamic, HydrationScript, NoHydration, Portal, escape, generateHydrationScript, getHydrationKey, isServer, pipeToNodeWritable, pipeToWritable, renderToStream, renderToString, renderToStringAsync, resolveSSRNode, spread, ssr, ssrAttribute, ssrClassList, ssrHydrationKey, ssrSpread, ssrStyle };
package/web/dist/web.cjs CHANGED
@@ -135,6 +135,9 @@ function setAttribute(node, name, value) {
135
135
  function setAttributeNS(node, namespace, name, value) {
136
136
  if (value == null) node.removeAttributeNS(namespace, name);else node.setAttributeNS(namespace, name, value);
137
137
  }
138
+ function className(node, value) {
139
+ if (value == null) node.removeAttribute("class");else node.className = value;
140
+ }
138
141
  function addEventListener(node, name, handler, delegate) {
139
142
  if (delegate) {
140
143
  if (Array.isArray(handler)) {
@@ -315,7 +318,7 @@ function assignProp(node, prop, value, prev, isSVG, skipRef) {
315
318
  addEventListener(node, name, value, delegate);
316
319
  delegate && delegateEvents([name]);
317
320
  } else if ((isChildProp = ChildProperties.has(prop)) || !isSVG && (PropAliases[prop] || (isProp = Properties.has(prop))) || (isCE = node.nodeName.includes("-"))) {
318
- if (isCE && !isProp && !isChildProp) node[toPropertyName(prop)] = value;else node[PropAliases[prop] || prop] = value;
321
+ if (prop === "class" || prop === "className") className(node, value);else if (isCE && !isProp && !isChildProp) node[toPropertyName(prop)] = value;else node[PropAliases[prop] || prop] = value;
319
322
  } else {
320
323
  const ns = isSVG && prop.indexOf(":") > -1 && SVGNamespace[prop.split(":")[0]];
321
324
  if (ns) setAttributeNS(node, ns, prop, value);else setAttribute(node, Aliases[prop] || prop, value);
@@ -635,6 +638,7 @@ exports.SVGNamespace = SVGNamespace;
635
638
  exports.addEventListener = addEventListener;
636
639
  exports.assign = assign;
637
640
  exports.classList = classList;
641
+ exports.className = className;
638
642
  exports.clearDelegatedEvents = clearDelegatedEvents;
639
643
  exports.delegateEvents = delegateEvents;
640
644
  exports.dynamicProperty = dynamicProperty;
package/web/dist/web.js CHANGED
@@ -132,6 +132,9 @@ function setAttribute(node, name, value) {
132
132
  function setAttributeNS(node, namespace, name, value) {
133
133
  if (value == null) node.removeAttributeNS(namespace, name);else node.setAttributeNS(namespace, name, value);
134
134
  }
135
+ function className(node, value) {
136
+ if (value == null) node.removeAttribute("class");else node.className = value;
137
+ }
135
138
  function addEventListener(node, name, handler, delegate) {
136
139
  if (delegate) {
137
140
  if (Array.isArray(handler)) {
@@ -312,7 +315,7 @@ function assignProp(node, prop, value, prev, isSVG, skipRef) {
312
315
  addEventListener(node, name, value, delegate);
313
316
  delegate && delegateEvents([name]);
314
317
  } else if ((isChildProp = ChildProperties.has(prop)) || !isSVG && (PropAliases[prop] || (isProp = Properties.has(prop))) || (isCE = node.nodeName.includes("-"))) {
315
- if (isCE && !isProp && !isChildProp) node[toPropertyName(prop)] = value;else node[PropAliases[prop] || prop] = value;
318
+ if (prop === "class" || prop === "className") className(node, value);else if (isCE && !isProp && !isChildProp) node[toPropertyName(prop)] = value;else node[PropAliases[prop] || prop] = value;
316
319
  } else {
317
320
  const ns = isSVG && prop.indexOf(":") > -1 && SVGNamespace[prop.split(":")[0]];
318
321
  if (ns) setAttributeNS(node, ns, prop, value);else setAttribute(node, Aliases[prop] || prop, value);
@@ -568,4 +571,4 @@ function Dynamic(props) {
568
571
  });
569
572
  }
570
573
 
571
- export { Aliases, Assets, ChildProperties, DOMElements, DelegatedEvents, Dynamic, Assets as HydrationScript, NoHydration, Portal, PropAliases, Properties, SVGElements, SVGNamespace, addEventListener, assign, classList, clearDelegatedEvents, delegateEvents, dynamicProperty, escape, generateHydrationScript, getHydrationKey, getNextElement, getNextMarker, getNextMatch, hydrate, innerHTML, insert, isServer, memo, render, renderToStream, renderToString, renderToStringAsync, resolveSSRNode, runHydrationEvents, setAttribute, setAttributeNS, spread, ssr, ssrBoolean, ssrClassList, ssrHydrationKey, ssrSpread, ssrStyle, style, template };
574
+ export { Aliases, Assets, ChildProperties, DOMElements, DelegatedEvents, Dynamic, Assets as HydrationScript, NoHydration, Portal, PropAliases, Properties, SVGElements, SVGNamespace, addEventListener, assign, classList, className, clearDelegatedEvents, delegateEvents, dynamicProperty, escape, generateHydrationScript, getHydrationKey, getNextElement, getNextMarker, getNextMatch, hydrate, innerHTML, insert, isServer, memo, render, renderToStream, renderToString, renderToStringAsync, resolveSSRNode, runHydrationEvents, setAttribute, setAttributeNS, spread, ssr, ssrBoolean, ssrClassList, ssrHydrationKey, ssrSpread, ssrStyle, style, template };
@@ -31,6 +31,7 @@ export function spread<T>(
31
31
  export function assign(node: Element, props: any, isSVG?: Boolean, skipChildren?: Boolean): void;
32
32
  export function setAttribute(node: Element, name: string, value: string): void;
33
33
  export function setAttributeNS(node: Element, namespace: string, name: string, value: string): void;
34
+ export function className(node: Element, value: string): void;
34
35
  export function innerHTML(node: Element, content: string): void;
35
36
  export function addEventListener(
36
37
  node: Element,