@solidjs/web 2.0.0-beta.31 → 2.0.0-beta.32

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.
Files changed (64) hide show
  1. package/README.md +1 -6
  2. package/dist/dev.cjs +234 -45
  3. package/dist/dev.js +221 -42
  4. package/dist/server.cjs +456 -123
  5. package/dist/server.js +445 -120
  6. package/dist/web.cjs +234 -45
  7. package/dist/web.js +221 -42
  8. package/frames/dist/client.cjs +217 -112
  9. package/frames/dist/client.dev.cjs +217 -112
  10. package/frames/dist/client.dev.js +218 -113
  11. package/frames/dist/client.js +218 -113
  12. package/frames/dist/server.cjs +488 -177
  13. package/frames/dist/server.js +489 -179
  14. package/package.json +55 -4
  15. package/serialization/dist/serialization.cjs +8 -0
  16. package/serialization/dist/serialization.js +1 -0
  17. package/serialization/types/index.d.ts +173 -6
  18. package/serialization/types-cjs/index.d.cts +173 -6
  19. package/server-functions/dist/client.cjs +46 -9
  20. package/server-functions/dist/client.js +47 -11
  21. package/server-functions/dist/rich-args.cjs +11 -0
  22. package/server-functions/dist/rich-args.js +9 -0
  23. package/server-functions/dist/server.cjs +275 -126
  24. package/server-functions/dist/server.dev.cjs +1053 -0
  25. package/server-functions/dist/server.dev.js +1021 -0
  26. package/server-functions/dist/server.js +273 -127
  27. package/server-functions/package.json +10 -0
  28. package/server-functions/rich-args/package.json +20 -0
  29. package/storage/types/index.d.ts +1 -1
  30. package/storage/types-cjs/index.d.cts +1 -1
  31. package/types/client.d.ts +127 -6
  32. package/types/core.d.ts +3 -1
  33. package/types/frames/client.d.ts +15 -1
  34. package/types/frames/frame-client.d.ts +37 -7
  35. package/types/frames/frame-sink.d.ts +26 -3
  36. package/types/frames/frame-transport.d.ts +39 -7
  37. package/types/frames/serializer.d.ts +173 -6
  38. package/types/frames/server.d.ts +22 -0
  39. package/types/index.d.ts +2 -3
  40. package/types/response.d.ts +45 -0
  41. package/types/serializer.d.ts +173 -6
  42. package/types/server-functions/client.d.ts +1 -0
  43. package/types/server-functions/rich-args.d.ts +10 -0
  44. package/types/server-functions/server.d.ts +98 -0
  45. package/types/server-functions/shared.d.ts +22 -0
  46. package/types/server-mock.d.ts +171 -59
  47. package/types/server.d.ts +188 -36
  48. package/types-cjs/client.d.cts +127 -6
  49. package/types-cjs/core.d.cts +3 -1
  50. package/types-cjs/frames/client.d.cts +15 -1
  51. package/types-cjs/frames/frame-client.d.cts +37 -7
  52. package/types-cjs/frames/frame-sink.d.cts +26 -3
  53. package/types-cjs/frames/frame-transport.d.cts +39 -7
  54. package/types-cjs/frames/serializer.d.cts +173 -6
  55. package/types-cjs/frames/server.d.cts +22 -0
  56. package/types-cjs/index.d.cts +2 -3
  57. package/types-cjs/response.d.cts +45 -0
  58. package/types-cjs/serializer.d.cts +173 -6
  59. package/types-cjs/server-functions/client.d.cts +1 -0
  60. package/types-cjs/server-functions/rich-args.d.cts +10 -0
  61. package/types-cjs/server-functions/server.d.cts +98 -0
  62. package/types-cjs/server-functions/shared.d.cts +22 -0
  63. package/types-cjs/server-mock.d.cts +171 -59
  64. package/types-cjs/server.d.cts +188 -36
package/dist/dev.js CHANGED
@@ -1,4 +1,4 @@
1
- import { createRenderEffect, createMemo, sharedConfig, untrack, runWithOwner, flatten, createRoot, merge, createComponent, omit, createOwner, createSignal, $DEVCOMP, onCleanup, enableHydration, enforceLoadingBoundary, flush, getOwner, createEffect } from 'solid-js';
1
+ import { createRenderEffect, createMemo, runWithOwner, sharedConfig, untrack, flatten, createRoot, merge, createComponent, omit, createOwner, createSignal, $DEVCOMP, onCleanup, enableHydration, enforceLoadingBoundary, flush, getOwner, createEffect } from 'solid-js';
2
2
  export { Errored, For, Hydration, Loading, Match, NoHydration, Repeat, Reveal, Show, Switch, createComponent, getOwner, untrack } from 'solid-js';
3
3
 
4
4
  const DOMWithState = {
@@ -62,6 +62,17 @@ const effect = (fn, effectFn, options) => createRenderEffect(fn, effectFn, optio
62
62
  transparent: !options.scope
63
63
  } : transparentOptions);
64
64
  const memo = fn => createMemo(() => fn(), syncOptions);
65
+ const assetGates = new WeakMap();
66
+ const waitAsset = promise => {
67
+ let gate = assetGates.get(promise);
68
+ if (!gate) {
69
+ runWithOwner(null, () => {
70
+ gate = createMemo(() => promise);
71
+ });
72
+ assetGates.set(promise, gate);
73
+ }
74
+ gate();
75
+ };
65
76
 
66
77
  function reconcileArrays(parentNode, a, b, marker) {
67
78
  let bLength = b.length,
@@ -173,6 +184,7 @@ const HEAD_ELIGIBLE_TAGS = new Set(["title", "meta", "link", "style", "script",
173
184
  const HEAD_ATTR_NAME = /^[a-zA-Z_][a-zA-Z0-9_:.-]*$/;
174
185
  const RESOURCE_LINK_RELS = new Set(["preload", "modulepreload", "prefetch", "preconnect", "dns-prefetch", "stylesheet"]);
175
186
  const RESOURCE_QUALIFIERS = ["as", "crossorigin", "type", "media", "imagesrcset", "imagesizes"];
187
+ const STYLESHEET_FETCH_META = new Set(["crossorigin", "integrity", "referrerpolicy", "fetchpriority"]);
176
188
  function evalHeadValue(v) {
177
189
  return typeof v === "function" ? v() : v;
178
190
  }
@@ -254,6 +266,43 @@ function resolveHead(groups) {
254
266
  return winners;
255
267
  }
256
268
 
269
+ function parseCookieHeader(header) {
270
+ const cookies = {};
271
+ if (!header) return cookies;
272
+ for (const part of header.split(";")) {
273
+ const eq = part.indexOf("=");
274
+ if (eq < 0) continue;
275
+ const name = decodeSafe(part.slice(0, eq).trim());
276
+ let value = part.slice(eq + 1).trim();
277
+ if (value.length > 1 && value[0] === '"' && value[value.length - 1] === '"') {
278
+ value = value.slice(1, -1);
279
+ }
280
+ cookies[name] = decodeSafe(value);
281
+ }
282
+ return cookies;
283
+ }
284
+ function decodeSafe(text) {
285
+ try {
286
+ return decodeURIComponent(text);
287
+ } catch {
288
+ return text;
289
+ }
290
+ }
291
+ function serializeCookie(name, value, options = {}) {
292
+ let cookie = `${encodeURIComponent(name)}=${encodeURIComponent(value)}`;
293
+ cookie += `; Path=${options.path === undefined ? "/" : options.path}`;
294
+ if (options.domain) cookie += `; Domain=${options.domain}`;
295
+ if (options.maxAge !== undefined) cookie += `; Max-Age=${Math.trunc(options.maxAge)}`;
296
+ if (options.expires) cookie += `; Expires=${options.expires.toUTCString()}`;
297
+ if (options.httpOnly) cookie += "; HttpOnly";
298
+ if (options.secure) cookie += "; Secure";
299
+ if (options.sameSite) {
300
+ const sameSite = options.sameSite.toLowerCase();
301
+ cookie += `; SameSite=${sameSite === "none" ? "None" : sameSite === "strict" ? "Strict" : "Lax"}`;
302
+ }
303
+ return cookie;
304
+ }
305
+
257
306
  const $$EVENT_OWNER = "_$DX_EVENT_OWNER";
258
307
  const INNER_OWNED = {};
259
308
  const delegatedEvents = new Set();
@@ -657,6 +706,9 @@ function findAssetElement(selector, attr, value) {
657
706
  }
658
707
  return null;
659
708
  }
709
+ function setAssetAttrs(el, attrs) {
710
+ for (const name in attrs) el.setAttribute(name, attrs[name]);
711
+ }
660
712
  function mountAssetElement(descriptor) {
661
713
  let el;
662
714
  if (descriptor.type === "inline-style") {
@@ -675,12 +727,77 @@ function mountAssetElement(descriptor) {
675
727
  el.href = descriptor.href;
676
728
  }
677
729
  }
678
- if (descriptor.attrs) {
679
- for (const name in descriptor.attrs) el.setAttribute(name, descriptor.attrs[name]);
680
- }
730
+ if (descriptor.attrs) setAssetAttrs(el, descriptor.attrs);
681
731
  if (!el.isConnected) document.head.appendChild(el);
682
732
  return el;
683
733
  }
734
+ const assetLoadSettled = /*#__PURE__*/Promise.resolve();
735
+ function trackAssetLoad(entry, adopted) {
736
+ if (entry.loadPromise) return;
737
+ const el = entry.element;
738
+ let settled = el.sheet != null;
739
+ if (!settled && adopted && typeof performance !== "undefined" && performance.getEntriesByName) {
740
+ settled = performance.getEntriesByName(el.href).length > 0;
741
+ }
742
+ if (settled) {
743
+ entry.loadState = "loaded";
744
+ entry.loadPromise = assetLoadSettled;
745
+ return;
746
+ }
747
+ entry.loadState = "pending";
748
+ entry.loadPromise = new Promise(resolve => {
749
+ const settle = state => {
750
+ entry.loadState = state;
751
+ resolve();
752
+ };
753
+ el.addEventListener("load", () => settle("loaded"), {
754
+ once: true
755
+ });
756
+ el.addEventListener("error", () => settle("errored"), {
757
+ once: true
758
+ });
759
+ });
760
+ }
761
+ function warmAsset(descriptor) {
762
+ if (descriptor.policy === "exclusive" || descriptor.type === "inline-style") return;
763
+ const key = assetEntryKey(descriptor);
764
+ let entry = assetRegistry.get(key);
765
+ if (!entry) {
766
+ entry = {
767
+ count: 0,
768
+ element: null,
769
+ timer: null
770
+ };
771
+ assetRegistry.set(key, entry);
772
+ }
773
+ let adopted = true;
774
+ if (!entry.element || !entry.element.isConnected) {
775
+ const rel = descriptor.type === "module" ? "modulepreload" : "stylesheet";
776
+ let el = findAssetElement(`link[rel="${rel}"]`, "href", descriptor.href);
777
+ if (!el && descriptor.type === "style") {
778
+ el = findAssetElement('link[rel="preload"][as="style"]', "href", descriptor.href);
779
+ }
780
+ if (!el) {
781
+ adopted = false;
782
+ el = document.createElement("link");
783
+ if (descriptor.type === "style") {
784
+ el.setAttribute("rel", "preload");
785
+ el.setAttribute("as", "style");
786
+ } else {
787
+ el.setAttribute("rel", "modulepreload");
788
+ }
789
+ el.setAttribute("href", descriptor.href);
790
+ if (!document.body) el.setAttribute("blocking", "render");
791
+ }
792
+ if (descriptor.attrs) setAssetAttrs(el, descriptor.attrs);
793
+ if (!el.isConnected) document.head.appendChild(el);
794
+ entry.element = el;
795
+ entry.loadState = undefined;
796
+ entry.loadPromise = undefined;
797
+ }
798
+ if (descriptor.type === "style") trackAssetLoad(entry, adopted);
799
+ return entry;
800
+ }
684
801
  function acquireAsset(descriptor) {
685
802
  const key = assetEntryKey(descriptor);
686
803
  let entry = assetRegistry.get(key);
@@ -727,7 +844,12 @@ function acquireAsset(descriptor) {
727
844
  entry.timer = null;
728
845
  }
729
846
  entry.count++;
730
- if (!entry.element || !entry.element.isConnected) entry.element = mountAssetElement(descriptor);
847
+ if (!entry.element || !entry.element.isConnected) {
848
+ entry.element = mountAssetElement(descriptor);
849
+ } else if (descriptor.type === "style" && entry.element.getAttribute("rel") === "preload") {
850
+ entry.element.removeAttribute("as");
851
+ entry.element.setAttribute("rel", "stylesheet");
852
+ }
731
853
  let released = false;
732
854
  return () => {
733
855
  if (released) return;
@@ -876,25 +998,9 @@ function headElementMatches(el, t) {
876
998
  const children = t.props.children;
877
999
  return (children == null ? "" : String(children)) === el.textContent;
878
1000
  }
879
- function acquireHeadResource(tag, props) {
880
- if (tag === "link" && (props.rel === "stylesheet" || props.rel === "modulepreload")) {
881
- const descriptor = {
882
- type: props.rel === "stylesheet" ? "style" : "module",
883
- href: props.href
884
- };
885
- let attrs = null;
886
- for (const name in props) {
887
- if (name === "rel" || name === "href") continue;
888
- if (!HEAD_ATTR_NAME.test(name)) continue;
889
- const v = props[name];
890
- if (v == null || v === false) continue;
891
- (attrs || (attrs = {}))[name] = v === true ? "" : String(v);
892
- }
893
- if (attrs) descriptor.attrs = attrs;
894
- return acquireAsset(descriptor);
895
- }
1001
+ function mountHeadResource(tag, props) {
896
1002
  const identity = resourceIdentity(tag, props);
897
- if (headMountedResources.has(identity)) return noopFn;
1003
+ if (headMountedResources.has(identity)) return;
898
1004
  headMountedResources.add(identity);
899
1005
  const url = props.href || props.src;
900
1006
  let el = null;
@@ -902,9 +1008,28 @@ function acquireHeadResource(tag, props) {
902
1008
  if (tag === "link") el = findAssetElement(`link[rel="${props.rel}"]`, "href", url);else if (tag === "script") el = findAssetElement("script[src]", "src", url);else el = findAssetElement("style[href]", "href", url);
903
1009
  }
904
1010
  if (!el) document.head.appendChild(createHeadElement(tag, props));
905
- return noopFn;
906
1011
  }
907
- function noopFn() {}
1012
+ function gateHeadResource(props) {
1013
+ const descriptor = {
1014
+ type: props.rel === "stylesheet" ? "style" : "module",
1015
+ href: props.href
1016
+ };
1017
+ let gateable = props.rel === "stylesheet" && props.href != null;
1018
+ let attrs = null;
1019
+ for (const name in props) {
1020
+ if (name === "rel" || name === "href") continue;
1021
+ if (!STYLESHEET_FETCH_META.has(name)) gateable = false;
1022
+ if (!HEAD_ATTR_NAME.test(name)) continue;
1023
+ const v = props[name];
1024
+ if (v == null || v === false) continue;
1025
+ (attrs || (attrs = {}))[name] = v === true ? "" : String(v);
1026
+ }
1027
+ if (attrs) descriptor.attrs = attrs;
1028
+ effect(() => {
1029
+ const entry = warmAsset(descriptor);
1030
+ if (gateable && entry.loadState === "pending" && typeof waitAsset === "function") waitAsset(entry.loadPromise);
1031
+ }, () => acquireAsset(descriptor));
1032
+ }
908
1033
  function useHead(tags) {
909
1034
  initHeadRegistry();
910
1035
  const reg = {
@@ -928,10 +1053,16 @@ function useHead(tags) {
928
1053
  rel: cls.rel
929
1054
  } : undefined);
930
1055
  if (cls.resource) {
931
- resources.push({
932
- tag: desc.tag,
933
- props
934
- });
1056
+ if (desc.tag === "link" && (props.rel === "stylesheet" || props.rel === "modulepreload")) {
1057
+ gateHeadResource(props);
1058
+ } else if (desc.tag === "link") {
1059
+ mountHeadResource(desc.tag, props);
1060
+ } else {
1061
+ resources.push({
1062
+ tag: desc.tag,
1063
+ props
1064
+ });
1065
+ }
935
1066
  } else {
936
1067
  const key = evalHeadValue(desc.key);
937
1068
  replaceable.push({
@@ -946,9 +1077,8 @@ function useHead(tags) {
946
1077
  resources
947
1078
  };
948
1079
  }, evaluated => {
949
- const releases = [];
950
1080
  for (let i = 0; i < evaluated.resources.length; i++) {
951
- releases.push(acquireHeadResource(evaluated.resources[i].tag, evaluated.resources[i].props));
1081
+ mountHeadResource(evaluated.resources[i].tag, evaluated.resources[i].props);
952
1082
  }
953
1083
  reg.tags = evaluated.replaceable;
954
1084
  if (reg.seq < 0) reg.seq = ++headSeq;
@@ -957,7 +1087,6 @@ function useHead(tags) {
957
1087
  return () => {
958
1088
  const idx = headRegistrations.indexOf(reg);
959
1089
  if (idx > -1) headRegistrations.splice(idx, 1);
960
- for (let i = 0; i < releases.length; i++) releases[i]();
961
1090
  scheduleHeadApply();
962
1091
  };
963
1092
  });
@@ -1445,7 +1574,13 @@ function gatherHydratable(element, root) {
1445
1574
  for (let i = 0; i < templates.length; i++) {
1446
1575
  const node = templates[i];
1447
1576
  const key = node.getAttribute("_hk");
1448
- if ((!root || key.startsWith(root)) && !sharedConfig.registry.has(key)) sharedConfig.registry.set(key, node);
1577
+ if (root) {
1578
+ if (!key.startsWith(root)) continue;
1579
+ } else {
1580
+ const frame = node.closest("[data-fid]");
1581
+ if (frame && frame !== element && element.contains(frame)) continue;
1582
+ }
1583
+ if (!sharedConfig.registry.has(key)) sharedConfig.registry.set(key, node);
1449
1584
  }
1450
1585
  }
1451
1586
  function getHydrationKey() {
@@ -1461,20 +1596,37 @@ function throwInBrowser(func) {
1461
1596
  function renderToString(fn, options) {
1462
1597
  throwInBrowser(renderToString);
1463
1598
  }
1464
- function renderToStringAsync(fn, options) {
1465
- throwInBrowser(renderToStringAsync);
1466
- }
1467
1599
  function renderToStream(fn, options) {
1468
1600
  throwInBrowser(renderToStream);
1469
1601
  }
1602
+ function createResponseStub() {
1603
+ throwInBrowser(createResponseStub);
1604
+ }
1605
+ function createRequestEvent(request, init) {
1606
+ throwInBrowser(createRequestEvent);
1607
+ }
1608
+ function getExpectedRedirectStatus(response) {
1609
+ throwInBrowser(getExpectedRedirectStatus);
1610
+ }
1611
+ function createSSRResponse() {
1612
+ throwInBrowser(createSSRResponse);
1613
+ }
1614
+ function commitEventResponse(response, event) {
1615
+ throwInBrowser(commitEventResponse);
1616
+ }
1617
+ function composeMiddleware(middlewares) {
1618
+ throwInBrowser(composeMiddleware);
1619
+ }
1470
1620
  function ssr(template, ...nodes) {}
1471
1621
  function ssrElement(name, props, children, needsId) {}
1472
- function ssrClassList(value) {}
1622
+ function ssrClassName(value) {}
1473
1623
  function ssrStyle(value) {}
1624
+ function ssrStyleProperty(name, value) {}
1474
1625
  function ssrAttribute(key, value) {}
1626
+ function ssrGroup(fn, n) {}
1475
1627
  function ssrHydrationKey() {}
1476
- function resolveSSRNode(node) {}
1477
- function escape(html) {}
1628
+ function resolveSSRNode(node, result, top) {}
1629
+ function escape(s, attr) {}
1478
1630
 
1479
1631
  const ENVELOPE = Symbol.for("solid.ResponseEnvelope");
1480
1632
  class ResponseEnvelope {
@@ -1491,13 +1643,38 @@ const HREF = Symbol.for("solid.Href");
1491
1643
  function isHref(value) {
1492
1644
  return !!(value && (typeof value === "object" || typeof value === "function") && value[HREF]);
1493
1645
  }
1646
+ const SAFE_ERROR = Symbol.for("solid.SafeError");
1647
+ function markSafeError(error) {
1648
+ if (error && (typeof error === "object" || typeof error === "function")) {
1649
+ Object.defineProperty(error, SAFE_ERROR, {
1650
+ value: true,
1651
+ enumerable: false,
1652
+ configurable: true
1653
+ });
1654
+ }
1655
+ return error;
1656
+ }
1657
+ function isSafeError(value) {
1658
+ return !!(value && (typeof value === "object" || typeof value === "function") && value[SAFE_ERROR]);
1659
+ }
1494
1660
  const REVALIDATE_HEADER = "X-Revalidate";
1495
1661
  function initWithRevalidate(init) {
1496
1662
  const {
1497
1663
  revalidate,
1498
1664
  ...responseInit
1499
1665
  } = init;
1500
- const headers = new Headers(responseInit.headers);
1666
+ let headers;
1667
+ if (responseInit.headers && responseInit.headers.getSetCookie) {
1668
+ headers = new Headers();
1669
+ responseInit.headers.forEach((value, key) => {
1670
+ if (key !== "set-cookie") headers.append(key, value);
1671
+ });
1672
+ for (const cookie of responseInit.headers.getSetCookie()) {
1673
+ headers.append("Set-Cookie", cookie);
1674
+ }
1675
+ } else {
1676
+ headers = new Headers(responseInit.headers);
1677
+ }
1501
1678
  revalidate !== undefined && headers.set(REVALIDATE_HEADER, revalidate.toString());
1502
1679
  return {
1503
1680
  responseInit,
@@ -1624,9 +1801,11 @@ function bindingOf(value) {
1624
1801
  function dynamic(source) {
1625
1802
  let latest = 0;
1626
1803
  const sites = new Set();
1804
+ let deliveredAddress;
1627
1805
  const resolveBinding = (next, prev) => {
1628
1806
  const binding = bindingOf(next);
1629
1807
  if (!binding) return next;
1808
+ deliveredAddress = binding.address;
1630
1809
  const prevBinding = bindingOf(prev);
1631
1810
  if (prevBinding && prevBinding.component === binding.component) {
1632
1811
  for (const deliver of sites) deliver(binding.address);
@@ -1655,7 +1834,7 @@ function dynamic(source) {
1655
1834
  });
1656
1835
  const binding = bindingOf(component);
1657
1836
  if (binding) {
1658
- const [address, setAddress] = createSignal(binding.address);
1837
+ const [address, setAddress] = createSignal(deliveredAddress ?? binding.address);
1659
1838
  sites.add(setAddress);
1660
1839
  onCleanup(() => sites.delete(setAddress));
1661
1840
  return untrack(() => binding.component(props, address));
@@ -1705,4 +1884,4 @@ _moduleUrl) {
1705
1884
  function httpStatus(_code, _text) {}
1706
1885
  function httpHeader(_name, _value, _options) {}
1707
1886
 
1708
- export { voidFn as Assets, ChildProperties, DOMElements, DOMWithState, DelegatedEvents, Dynamic, HREF, voidFn as HydrationScript, MathMLElements, Namespaces, Portal, REVALIDATE_HEADER, RawTextElements, RequestContext, ResponseEnvelope, SVGElements, VoidElements, acquireAsset, addEvent, applyRef, assign, claimElement, claimElementTree, className, clientOnly, delegateEvents, dynamic, dynamicProperty, effect, escape, voidFn as generateHydrationScript, voidFn as getAssets, getDelegatedRoot, getFirstChild, getHydrationKey, getNextElement, getNextMarker, getNextMatch, getNextSibling, voidFn as getRequestEvent, httpHeader, httpStatus, hydrate, insert, installHydrationRuntime, isDev, isHref, isResponseEnvelope, isServer, memo, mergeProps, redirect, ref, registerDelegatedContainer, registerDelegatedRoot, registerElementClaim, reload, render, renderToStream, renderToString, renderToStringAsync, resolveSSRNode, respond, runHydrationEvents, scope, setAttribute, setAttributeNS, setProperty, setStyleProperty, spread, ssr, ssrAttribute, ssrClassList, ssrElement, ssrHydrationKey, ssrStyle, style, template, unregisterDelegatedContainer, unregisterDelegatedRoot, voidFn as useAssets, useHead };
1887
+ export { ChildProperties, DOMElements, DOMWithState, DelegatedEvents, Dynamic, HREF, voidFn as HydrationScript, MathMLElements, Namespaces, Portal, REVALIDATE_HEADER, RawTextElements, RequestContext, ResponseEnvelope, SAFE_ERROR, SVGElements, VoidElements, acquireAsset, addEvent, applyRef, assign, claimElement, claimElementTree, className, clientOnly, commitEventResponse, composeMiddleware, createRequestEvent, createResponseStub, createSSRResponse, delegateEvents, dynamic, dynamicProperty, effect, escape, voidFn as generateHydrationScript, getDelegatedRoot, getExpectedRedirectStatus, getFirstChild, getHydrationKey, getNextElement, getNextMarker, getNextMatch, getNextSibling, voidFn as getRequestEvent, httpHeader, httpStatus, hydrate, insert, installHydrationRuntime, isDev, isHref, isResponseEnvelope, isSafeError, isServer, markSafeError, memo, mergeProps, parseCookieHeader, redirect, ref, registerDelegatedContainer, registerDelegatedRoot, registerElementClaim, reload, render, renderToStream, renderToString, resolveSSRNode, respond, runHydrationEvents, scope, serializeCookie, setAttribute, setAttributeNS, setProperty, setStyleProperty, spread, ssr, ssrAttribute, ssrClassName, ssrElement, ssrGroup, ssrHydrationKey, ssrStyle, ssrStyleProperty, style, template, unregisterDelegatedContainer, unregisterDelegatedRoot, useHead, warmAsset };