@solidjs/web 2.0.0-beta.11 → 2.0.0-beta.12

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/server.cjs CHANGED
@@ -617,6 +617,19 @@ function ssrFirstGroupHit(hole) {
617
617
  return buildAsyncWrap(err, hole);
618
618
  }
619
619
  }
620
+ function tryResolveFunctionHole(hole) {
621
+ let value;
622
+ try {
623
+ value = hole();
624
+ } catch (err) {
625
+ return buildAsyncWrap(err, hole) || "";
626
+ }
627
+ const t = typeof value;
628
+ if (t === "string") return value;
629
+ if (t === "number") return "" + value;
630
+ if (value == null || t === "boolean") return "";
631
+ return tryResolveString(value);
632
+ }
620
633
  function mergeTemplateInto(result, node) {
621
634
  result.t[result.t.length - 1] += node.t[0];
622
635
  if (node.t.length > 1) {
@@ -625,6 +638,13 @@ function mergeTemplateInto(result, node) {
625
638
  result.p.push(...node.p);
626
639
  }
627
640
  }
641
+ function appendResolvedNode(result, node) {
642
+ if (node.fn !== undefined) {
643
+ result.h.push(node.fn);
644
+ result.p.push(node.p);
645
+ result.t.push("");
646
+ } else if (node.merge !== undefined) mergeTemplateInto(result, node.merge);else resolveSSRNode(node.bail, result);
647
+ }
628
648
  let _lastGroupFn = null;
629
649
  let _lastGroupArr = null;
630
650
  let _lastGroupErr = null;
@@ -715,6 +735,17 @@ function ssr(t) {
715
735
  }
716
736
  } else if (result !== null) {
717
737
  resolveSSRNode(hole, result);
738
+ } else if (ht === "function") {
739
+ const r = tryResolveFunctionHole(hole);
740
+ if (typeof r === "string") s += r;else {
741
+ result = {
742
+ t: [s],
743
+ h: [],
744
+ p: []
745
+ };
746
+ s = "";
747
+ appendResolvedNode(result, r);
748
+ }
718
749
  } else {
719
750
  const r = tryResolveString(hole);
720
751
  if (typeof r === "string") {
@@ -726,11 +757,7 @@ function ssr(t) {
726
757
  p: []
727
758
  };
728
759
  s = "";
729
- if (r.fn !== undefined) {
730
- result.h.push(r.fn);
731
- result.p.push(r.p);
732
- result.t.push("");
733
- } else if (r.merge !== undefined) mergeTemplateInto(result, r.merge);else resolveSSRNode(r.bail, result);
760
+ appendResolvedNode(result, r);
734
761
  }
735
762
  }
736
763
  const next = t[i];
@@ -820,6 +847,8 @@ function escape(s, attr) {
820
847
  const t = typeof s;
821
848
  if (t !== "string") {
822
849
  if (!attr && Array.isArray(s)) {
850
+ const joined = tryJoinPlainSSRArray(s);
851
+ if (joined !== undefined) return joined;
823
852
  s = s.slice();
824
853
  for (let i = 0; i < s.length; i++) s[i] = escape(s[i]);
825
854
  return s;
@@ -872,6 +901,18 @@ function escapeSlow(s, attr, start) {
872
901
  }
873
902
  return left < s.length ? out + s.substring(left) : out;
874
903
  }
904
+ function tryJoinPlainSSRArray(nodes) {
905
+ if (nodes.length === 0) return undefined;
906
+ let out = "";
907
+ for (let i = 0, len = nodes.length; i < len; i++) {
908
+ const node = nodes[i];
909
+ if (node == null || typeof node !== "object" || node.h || typeof node.t !== "string") {
910
+ return undefined;
911
+ }
912
+ out += node.t;
913
+ }
914
+ return out;
915
+ }
875
916
  function mergeProps(...sources) {
876
917
  const target = {};
877
918
  for (let i = 0; i < sources.length; i++) {
@@ -1020,6 +1061,8 @@ function tryResolveString(node) {
1020
1061
  if (node == null || t === "boolean") return "";
1021
1062
  if (t === "object") {
1022
1063
  if (Array.isArray(node)) {
1064
+ const joined = tryJoinPlainSSRArray(node);
1065
+ if (joined !== undefined) return joined;
1023
1066
  let s = "";
1024
1067
  let prevNonObj = false;
1025
1068
  for (let i = 0, len = node.length; i < len; i++) {
package/dist/server.js CHANGED
@@ -616,6 +616,19 @@ function ssrFirstGroupHit(hole) {
616
616
  return buildAsyncWrap(err, hole);
617
617
  }
618
618
  }
619
+ function tryResolveFunctionHole(hole) {
620
+ let value;
621
+ try {
622
+ value = hole();
623
+ } catch (err) {
624
+ return buildAsyncWrap(err, hole) || "";
625
+ }
626
+ const t = typeof value;
627
+ if (t === "string") return value;
628
+ if (t === "number") return "" + value;
629
+ if (value == null || t === "boolean") return "";
630
+ return tryResolveString(value);
631
+ }
619
632
  function mergeTemplateInto(result, node) {
620
633
  result.t[result.t.length - 1] += node.t[0];
621
634
  if (node.t.length > 1) {
@@ -624,6 +637,13 @@ function mergeTemplateInto(result, node) {
624
637
  result.p.push(...node.p);
625
638
  }
626
639
  }
640
+ function appendResolvedNode(result, node) {
641
+ if (node.fn !== undefined) {
642
+ result.h.push(node.fn);
643
+ result.p.push(node.p);
644
+ result.t.push("");
645
+ } else if (node.merge !== undefined) mergeTemplateInto(result, node.merge);else resolveSSRNode(node.bail, result);
646
+ }
627
647
  let _lastGroupFn = null;
628
648
  let _lastGroupArr = null;
629
649
  let _lastGroupErr = null;
@@ -714,6 +734,17 @@ function ssr(t) {
714
734
  }
715
735
  } else if (result !== null) {
716
736
  resolveSSRNode(hole, result);
737
+ } else if (ht === "function") {
738
+ const r = tryResolveFunctionHole(hole);
739
+ if (typeof r === "string") s += r;else {
740
+ result = {
741
+ t: [s],
742
+ h: [],
743
+ p: []
744
+ };
745
+ s = "";
746
+ appendResolvedNode(result, r);
747
+ }
717
748
  } else {
718
749
  const r = tryResolveString(hole);
719
750
  if (typeof r === "string") {
@@ -725,11 +756,7 @@ function ssr(t) {
725
756
  p: []
726
757
  };
727
758
  s = "";
728
- if (r.fn !== undefined) {
729
- result.h.push(r.fn);
730
- result.p.push(r.p);
731
- result.t.push("");
732
- } else if (r.merge !== undefined) mergeTemplateInto(result, r.merge);else resolveSSRNode(r.bail, result);
759
+ appendResolvedNode(result, r);
733
760
  }
734
761
  }
735
762
  const next = t[i];
@@ -819,6 +846,8 @@ function escape(s, attr) {
819
846
  const t = typeof s;
820
847
  if (t !== "string") {
821
848
  if (!attr && Array.isArray(s)) {
849
+ const joined = tryJoinPlainSSRArray(s);
850
+ if (joined !== undefined) return joined;
822
851
  s = s.slice();
823
852
  for (let i = 0; i < s.length; i++) s[i] = escape(s[i]);
824
853
  return s;
@@ -871,6 +900,18 @@ function escapeSlow(s, attr, start) {
871
900
  }
872
901
  return left < s.length ? out + s.substring(left) : out;
873
902
  }
903
+ function tryJoinPlainSSRArray(nodes) {
904
+ if (nodes.length === 0) return undefined;
905
+ let out = "";
906
+ for (let i = 0, len = nodes.length; i < len; i++) {
907
+ const node = nodes[i];
908
+ if (node == null || typeof node !== "object" || node.h || typeof node.t !== "string") {
909
+ return undefined;
910
+ }
911
+ out += node.t;
912
+ }
913
+ return out;
914
+ }
874
915
  function mergeProps(...sources) {
875
916
  const target = {};
876
917
  for (let i = 0; i < sources.length; i++) {
@@ -1019,6 +1060,8 @@ function tryResolveString(node) {
1019
1060
  if (node == null || t === "boolean") return "";
1020
1061
  if (t === "object") {
1021
1062
  if (Array.isArray(node)) {
1063
+ const joined = tryJoinPlainSSRArray(node);
1064
+ if (joined !== undefined) return joined;
1022
1065
  let s = "";
1023
1066
  let prevNonObj = false;
1024
1067
  for (let i = 0, len = node.length; i < len; i++) {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@solidjs/web",
3
3
  "description": "Solid's web runtime: client rendering, hydration, SSR, and DOM-specific control flow (Portal, Dynamic).",
4
- "version": "2.0.0-beta.11",
4
+ "version": "2.0.0-beta.12",
5
5
  "author": "Ryan Carniato",
6
6
  "license": "MIT",
7
7
  "homepage": "https://solidjs.com",
@@ -137,10 +137,10 @@
137
137
  "seroval-plugins": "^1.1.0"
138
138
  },
139
139
  "peerDependencies": {
140
- "solid-js": "^2.0.0-beta.11"
140
+ "solid-js": "^2.0.0-beta.12"
141
141
  },
142
142
  "devDependencies": {
143
- "solid-js": "2.0.0-beta.11"
143
+ "solid-js": "2.0.0-beta.12"
144
144
  },
145
145
  "scripts": {
146
146
  "build": "npm-run-all -nl build:clean types:copy-jsx build:js",