solid-js 1.7.8 → 1.7.10

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 (54) hide show
  1. package/dist/dev.cjs +35 -19
  2. package/dist/dev.js +558 -309
  3. package/dist/server.cjs +38 -23
  4. package/dist/server.js +202 -94
  5. package/dist/solid.cjs +35 -19
  6. package/dist/solid.js +485 -267
  7. package/h/dist/h.cjs +2 -2
  8. package/h/dist/h.js +36 -10
  9. package/h/jsx-runtime/dist/jsx.js +1 -1
  10. package/h/jsx-runtime/types/index.d.ts +11 -8
  11. package/h/jsx-runtime/types/jsx.d.ts +3 -0
  12. package/h/types/hyperscript.d.ts +11 -11
  13. package/h/types/index.d.ts +3 -2
  14. package/html/dist/html.cjs +2 -2
  15. package/html/dist/html.js +218 -96
  16. package/html/types/index.d.ts +3 -2
  17. package/html/types/lit.d.ts +45 -31
  18. package/package.json +1 -1
  19. package/store/dist/dev.cjs +36 -33
  20. package/store/dist/dev.js +143 -68
  21. package/store/dist/server.js +19 -8
  22. package/store/dist/store.cjs +36 -33
  23. package/store/dist/store.js +134 -65
  24. package/store/types/index.d.ts +21 -7
  25. package/store/types/modifiers.d.ts +6 -3
  26. package/store/types/mutable.d.ts +5 -2
  27. package/store/types/server.d.ts +12 -4
  28. package/store/types/store.d.ts +220 -63
  29. package/types/index.d.ts +72 -9
  30. package/types/jsx.d.ts +3 -0
  31. package/types/reactive/array.d.ts +12 -4
  32. package/types/reactive/observable.d.ts +25 -17
  33. package/types/reactive/scheduler.d.ts +9 -6
  34. package/types/reactive/signal.d.ts +237 -146
  35. package/types/render/Suspense.d.ts +5 -5
  36. package/types/render/component.d.ts +62 -31
  37. package/types/render/flow.d.ts +43 -31
  38. package/types/render/hydration.d.ts +12 -12
  39. package/types/server/index.d.ts +56 -2
  40. package/types/server/reactive.d.ts +71 -45
  41. package/types/server/rendering.d.ts +171 -95
  42. package/universal/dist/dev.js +28 -12
  43. package/universal/dist/universal.js +28 -12
  44. package/universal/types/index.d.ts +3 -1
  45. package/universal/types/universal.d.ts +0 -1
  46. package/web/dist/dev.js +610 -79
  47. package/web/dist/server.cjs +5 -1
  48. package/web/dist/server.js +181 -78
  49. package/web/dist/web.js +610 -79
  50. package/web/types/client.d.ts +2 -2
  51. package/web/types/core.d.ts +10 -1
  52. package/web/types/index.d.ts +27 -10
  53. package/web/types/server-mock.d.ts +47 -32
  54. package/web/types/server.d.ts +1 -1
@@ -215,14 +215,17 @@ function renderToStream(code, options = {}) {
215
215
  });
216
216
  },
217
217
  pipeTo(w) {
218
- Promise.allSettled(blockingResources).then(() => {
218
+ return Promise.allSettled(blockingResources).then(() => {
219
219
  doShell();
220
220
  const encoder = new TextEncoder();
221
221
  const writer = w.getWriter();
222
+ let resolve;
223
+ const p = new Promise(r => resolve = r);
222
224
  writable = {
223
225
  end() {
224
226
  writer.releaseLock();
225
227
  w.close();
228
+ resolve();
226
229
  }
227
230
  };
228
231
  buffer = {
@@ -233,6 +236,7 @@ function renderToStream(code, options = {}) {
233
236
  buffer.write(tmp);
234
237
  firstFlushed = true;
235
238
  if (completed) writable.end();else setTimeout(checkEnd);
239
+ return p;
236
240
  });
237
241
  }
238
242
  };
@@ -1,25 +1,65 @@
1
- import { sharedConfig, createRoot, splitProps } from 'solid-js';
2
- export { ErrorBoundary, For, Index, Match, Show, Suspense, SuspenseList, Switch, createComponent, mergeProps } from 'solid-js';
3
- import { serialize, Feature } from 'seroval';
1
+ import { sharedConfig, createRoot, splitProps } from "solid-js";
2
+ export {
3
+ ErrorBoundary,
4
+ For,
5
+ Index,
6
+ Match,
7
+ Show,
8
+ Suspense,
9
+ SuspenseList,
10
+ Switch,
11
+ createComponent,
12
+ mergeProps
13
+ } from "solid-js";
14
+ import { serialize, Feature } from "seroval";
4
15
 
5
- const booleans = ["allowfullscreen", "async", "autofocus", "autoplay", "checked", "controls", "default", "disabled", "formnovalidate", "hidden", "indeterminate", "ismap", "loop", "multiple", "muted", "nomodule", "novalidate", "open", "playsinline", "readonly", "required", "reversed", "seamless", "selected"];
6
- const BooleanAttributes = /*#__PURE__*/new Set(booleans);
7
- const ChildProperties = /*#__PURE__*/new Set(["innerHTML", "textContent", "innerText", "children"]);
8
- const Aliases = /*#__PURE__*/Object.assign(Object.create(null), {
16
+ const booleans = [
17
+ "allowfullscreen",
18
+ "async",
19
+ "autofocus",
20
+ "autoplay",
21
+ "checked",
22
+ "controls",
23
+ "default",
24
+ "disabled",
25
+ "formnovalidate",
26
+ "hidden",
27
+ "indeterminate",
28
+ "ismap",
29
+ "loop",
30
+ "multiple",
31
+ "muted",
32
+ "nomodule",
33
+ "novalidate",
34
+ "open",
35
+ "playsinline",
36
+ "readonly",
37
+ "required",
38
+ "reversed",
39
+ "seamless",
40
+ "selected"
41
+ ];
42
+ const BooleanAttributes = /*#__PURE__*/ new Set(booleans);
43
+ const ChildProperties = /*#__PURE__*/ new Set([
44
+ "innerHTML",
45
+ "textContent",
46
+ "innerText",
47
+ "children"
48
+ ]);
49
+ const Aliases = /*#__PURE__*/ Object.assign(Object.create(null), {
9
50
  className: "class",
10
51
  htmlFor: "for"
11
52
  });
12
53
 
13
- const ES2017FLAG = Feature.AggregateError
14
- | Feature.BigInt
15
- | Feature.BigIntTypedArray;
54
+ const ES2017FLAG = Feature.AggregateError | Feature.BigInt | Feature.BigIntTypedArray;
16
55
  function stringify(data) {
17
56
  return serialize(data, {
18
57
  disabledFeatures: ES2017FLAG
19
58
  });
20
59
  }
21
60
 
22
- const VOID_ELEMENTS = /^(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)$/i;
61
+ const VOID_ELEMENTS =
62
+ /^(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)$/i;
23
63
  const REPLACE_SCRIPT = `function $df(e,n,t,o,d){if(t=document.getElementById(e),o=document.getElementById("pl-"+e)){for(;o&&8!==o.nodeType&&o.nodeValue!=="pl-"+e;)d=o.nextSibling,o.remove(),o=d;_$HY.done?o.remove():o.replaceWith(t.content)}t.remove(),_$HY.set(e,n),_$HY.fe(e)}`;
24
64
  function renderToString(code, options = {}) {
25
65
  let scripts = "";
@@ -32,7 +72,7 @@ function renderToString(code, options = {}) {
32
72
  nonce: options.nonce,
33
73
  writeResource(id, p, error) {
34
74
  if (sharedConfig.context.noHydrate) return;
35
- if (error) return scripts += `_$HY.set("${id}", ${stringify(p)});`;
75
+ if (error) return (scripts += `_$HY.set("${id}", ${stringify(p)});`);
36
76
  scripts += `_$HY.set("${id}", ${stringify(p)});`;
37
77
  }
38
78
  };
@@ -46,9 +86,7 @@ function renderToString(code, options = {}) {
46
86
  return html;
47
87
  }
48
88
  function renderToStringAsync(code, options = {}) {
49
- const {
50
- timeoutMs = 30000
51
- } = options;
89
+ const { timeoutMs = 30000 } = options;
52
90
  let timeoutHandle;
53
91
  const timeout = new Promise((_, reject) => {
54
92
  timeoutHandle = setTimeout(() => reject("renderToString timed out"), timeoutMs);
@@ -59,12 +97,7 @@ function renderToStringAsync(code, options = {}) {
59
97
  });
60
98
  }
61
99
  function renderToStream(code, options = {}) {
62
- let {
63
- nonce,
64
- onCompleteShell,
65
- onCompleteAll,
66
- renderId
67
- } = options;
100
+ let { nonce, onCompleteShell, onCompleteAll, renderId } = options;
68
101
  let dispose;
69
102
  const blockingResources = [];
70
103
  const registry = new Map();
@@ -72,11 +105,12 @@ function renderToStream(code, options = {}) {
72
105
  const checkEnd = () => {
73
106
  if (!registry.size && !completed) {
74
107
  writeTasks();
75
- onCompleteAll && onCompleteAll({
76
- write(v) {
77
- !completed && buffer.write(v);
78
- }
79
- });
108
+ onCompleteAll &&
109
+ onCompleteAll({
110
+ write(v) {
111
+ !completed && buffer.write(v);
112
+ }
113
+ });
80
114
  writable && writable.end();
81
115
  completed = true;
82
116
  setTimeout(dispose);
@@ -127,13 +161,18 @@ function renderToStream(code, options = {}) {
127
161
  const first = html.indexOf(placeholder);
128
162
  if (first === -1) return;
129
163
  const last = html.indexOf(`<!--!$/${id}-->`, first + placeholder.length);
130
- html = html.replace(html.slice(first, last + placeholder.length + 1), resolveSSRNode(payloadFn()));
164
+ html = html.replace(
165
+ html.slice(first, last + placeholder.length + 1),
166
+ resolveSSRNode(payloadFn())
167
+ );
131
168
  },
132
169
  writeResource(id, p, error, wait) {
133
170
  const serverOnly = sharedConfig.context.noHydrate;
134
171
  if (error) return !serverOnly && pushTask(serializeSet(dedupe, id, p));
135
- if (!p || typeof p !== "object" || !("then" in p)) return !serverOnly && pushTask(serializeSet(dedupe, id, p));
136
- if (!firstFlushed) wait && blockingResources.push(p);else !serverOnly && pushTask(`_$HY.init("${id}")`);
172
+ if (!p || typeof p !== "object" || !("then" in p))
173
+ return !serverOnly && pushTask(serializeSet(dedupe, id, p));
174
+ if (!firstFlushed) wait && blockingResources.push(p);
175
+ else !serverOnly && pushTask(`_$HY.init("${id}")`);
137
176
  if (serverOnly) return;
138
177
  p.then(d => {
139
178
  !completed && pushTask(serializeSet(dedupe, id, d));
@@ -153,11 +192,19 @@ function renderToStream(code, options = {}) {
153
192
  if (waitForFragments(registry, key)) return;
154
193
  if ((value !== undefined || error) && !completed) {
155
194
  if (!firstFlushed) {
156
- Promise.resolve().then(() => html = replacePlaceholder(html, key, value !== undefined ? value : ""));
195
+ Promise.resolve().then(
196
+ () => (html = replacePlaceholder(html, key, value !== undefined ? value : ""))
197
+ );
157
198
  error && pushTask(serializeSet(dedupe, key, error));
158
199
  } else {
159
200
  buffer.write(`<template id="${key}">${value !== undefined ? value : " "}</template>`);
160
- pushTask(`${keys.length ? keys.map(k => `_$HY.unset("${k}")`).join(";") + ";" : ""}$df("${key}"${error ? "," + stringify(error) : ""})${!scriptFlushed ? ";" + REPLACE_SCRIPT : ""}`);
201
+ pushTask(
202
+ `${
203
+ keys.length ? keys.map(k => `_$HY.unset("${k}")`).join(";") + ";" : ""
204
+ }$df("${key}"${error ? "," + stringify(error) : ""})${
205
+ !scriptFlushed ? ";" + REPLACE_SCRIPT : ""
206
+ }`
207
+ );
161
208
  scriptFlushed = true;
162
209
  }
163
210
  }
@@ -176,18 +223,20 @@ function renderToStream(code, options = {}) {
176
223
  context.noHydrate = true;
177
224
  html = injectAssets(context.assets, html);
178
225
  for (const key in context.resources) {
179
- if (!("data" in context.resources[key] || context.resources[key].ref[0].error)) pushTask(`_$HY.init("${key}")`);
226
+ if (!("data" in context.resources[key] || context.resources[key].ref[0].error))
227
+ pushTask(`_$HY.init("${key}")`);
180
228
  }
181
229
  for (const key of registry.keys()) pushTask(`_$HY.init("${key}")`);
182
230
  if (tasks.length) html = injectScripts(html, tasks, nonce);
183
231
  buffer.write(html);
184
232
  tasks = "";
185
233
  scheduled = false;
186
- onCompleteShell && onCompleteShell({
187
- write(v) {
188
- !completed && buffer.write(v);
189
- }
190
- });
234
+ onCompleteShell &&
235
+ onCompleteShell({
236
+ write(v) {
237
+ !completed && buffer.write(v);
238
+ }
239
+ });
191
240
  }
192
241
  return {
193
242
  then(fn) {
@@ -210,18 +259,22 @@ function renderToStream(code, options = {}) {
210
259
  buffer = writable = w;
211
260
  buffer.write(tmp);
212
261
  firstFlushed = true;
213
- if (completed) writable.end();else setTimeout(checkEnd);
262
+ if (completed) writable.end();
263
+ else setTimeout(checkEnd);
214
264
  });
215
265
  },
216
266
  pipeTo(w) {
217
- Promise.allSettled(blockingResources).then(() => {
267
+ return Promise.allSettled(blockingResources).then(() => {
218
268
  doShell();
219
269
  const encoder = new TextEncoder();
220
270
  const writer = w.getWriter();
271
+ let resolve;
272
+ const p = new Promise(r => (resolve = r));
221
273
  writable = {
222
274
  end() {
223
275
  writer.releaseLock();
224
276
  w.close();
277
+ resolve();
225
278
  }
226
279
  };
227
280
  buffer = {
@@ -231,19 +284,21 @@ function renderToStream(code, options = {}) {
231
284
  };
232
285
  buffer.write(tmp);
233
286
  firstFlushed = true;
234
- if (completed) writable.end();else setTimeout(checkEnd);
287
+ if (completed) writable.end();
288
+ else setTimeout(checkEnd);
289
+ return p;
235
290
  });
236
291
  }
237
292
  };
238
293
  }
239
294
  function HydrationScript(props) {
240
- const {
241
- nonce
242
- } = sharedConfig.context;
243
- return ssr(generateHydrationScript({
244
- nonce,
245
- ...props
246
- }));
295
+ const { nonce } = sharedConfig.context;
296
+ return ssr(
297
+ generateHydrationScript({
298
+ nonce,
299
+ ...props
300
+ })
301
+ );
247
302
  }
248
303
  function ssr(t, ...nodes) {
249
304
  if (nodes.length) {
@@ -288,7 +343,8 @@ function ssrStyle(value) {
288
343
  return result;
289
344
  }
290
345
  function ssrElement(tag, props, children, needsId) {
291
- if (props == null) props = {};else if (typeof props === "function") props = props();
346
+ if (props == null) props = {};
347
+ else if (typeof props === "function") props = props();
292
348
  const skipChildren = VOID_ELEMENTS.test(tag);
293
349
  const keys = Object.keys(props);
294
350
  let result = `<${tag}${needsId ? ssrHydrationKey() : ""} `;
@@ -296,7 +352,8 @@ function ssrElement(tag, props, children, needsId) {
296
352
  for (let i = 0; i < keys.length; i++) {
297
353
  const prop = keys[i];
298
354
  if (ChildProperties.has(prop)) {
299
- if (children === undefined && !skipChildren) children = prop === "innerHTML" ? props[prop] : escape(props[prop]);
355
+ if (children === undefined && !skipChildren)
356
+ children = prop === "innerHTML" ? props[prop] : escape(props[prop]);
300
357
  continue;
301
358
  }
302
359
  const value = props[prop];
@@ -305,10 +362,14 @@ function ssrElement(tag, props, children, needsId) {
305
362
  } else if (prop === "class" || prop === "className" || prop === "classList") {
306
363
  if (classResolved) continue;
307
364
  let n;
308
- result += `class="${escape(((n = props.class) ? n + " " : "") + ((n = props.className) ? n + " " : ""), true) + ssrClassList(props.classList)}"`;
365
+ result += `class="${
366
+ escape(((n = props.class) ? n + " " : "") + ((n = props.className) ? n + " " : ""), true) +
367
+ ssrClassList(props.classList)
368
+ }"`;
309
369
  classResolved = true;
310
370
  } else if (BooleanAttributes.has(prop)) {
311
- if (value) result += prop;else continue;
371
+ if (value) result += prop;
372
+ else continue;
312
373
  } else if (value == undefined || prop === "ref" || prop.slice(0, 2) === "on") {
313
374
  continue;
314
375
  } else {
@@ -316,16 +377,17 @@ function ssrElement(tag, props, children, needsId) {
316
377
  }
317
378
  if (i !== keys.length - 1) result += " ";
318
379
  }
319
- if (skipChildren) return {
320
- t: result + "/>"
321
- };
380
+ if (skipChildren)
381
+ return {
382
+ t: result + "/>"
383
+ };
322
384
  if (typeof children === "function") children = children();
323
385
  return {
324
386
  t: result + `>${resolveSSRNode(children, true)}</${tag}>`
325
387
  };
326
388
  }
327
389
  function ssrAttribute(key, value, isBoolean) {
328
- return isBoolean ? value ? " " + key : "" : value != null ? ` ${key}="${value}"` : "";
390
+ return isBoolean ? (value ? " " + key : "") : value != null ? ` ${key}="${value}"` : "";
329
391
  }
330
392
  function ssrHydrationKey() {
331
393
  const hk = getHydrationKey();
@@ -369,12 +431,13 @@ function escape(s, attr) {
369
431
  left = iDelim + 1;
370
432
  iDelim = s.indexOf(delim, left);
371
433
  } while (iDelim >= 0);
372
- } else while (iAmp >= 0) {
373
- if (left < iAmp) out += s.substring(left, iAmp);
374
- out += "&amp;";
375
- left = iAmp + 1;
376
- iAmp = s.indexOf("&", left);
377
- }
434
+ } else
435
+ while (iAmp >= 0) {
436
+ if (left < iAmp) out += s.substring(left, iAmp);
437
+ out += "&amp;";
438
+ left = iAmp + 1;
439
+ iAmp = s.indexOf("&", left);
440
+ }
378
441
  return left < s.length ? out + s.substring(left) : out;
379
442
  }
380
443
  function resolveSSRNode(node, top) {
@@ -386,7 +449,7 @@ function resolveSSRNode(node, top) {
386
449
  let mapped = "";
387
450
  for (let i = 0, len = node.length; i < len; i++) {
388
451
  if (!top && typeof prev !== "object" && typeof node[i] !== "object") mapped += `<!--!$-->`;
389
- mapped += resolveSSRNode(prev = node[i]);
452
+ mapped += resolveSSRNode((prev = node[i]));
390
453
  }
391
454
  return mapped;
392
455
  }
@@ -407,11 +470,12 @@ function getAssets() {
407
470
  for (let i = 0, len = assets.length; i < len; i++) out += assets[i]();
408
471
  return out;
409
472
  }
410
- function generateHydrationScript({
411
- eventNames = ["click", "input"],
412
- nonce
413
- } = {}) {
414
- return `<script${nonce ? ` nonce="${nonce}"` : ""}>(e=>{let t=e=>e&&e.hasAttribute&&(e.hasAttribute("data-hk")?e:t(e.host&&e.host.nodeType?e.host:e.parentNode));["${eventNames.join('", "')}"].forEach((o=>document.addEventListener(o,(o=>{let s=o.composedPath&&o.composedPath()[0]||o.target,a=t(s);a&&!e.completed.has(a)&&e.events.push([a,o])}))))})(window._$HY||(_$HY={events:[],completed:new WeakSet,r:{},fe(){},init(e,t){_$HY.r[e]=[new Promise((e=>t=e)),t]},set(e,t,o){(o=_$HY.r[e])&&o[1](t),_$HY.r[e]=[t]},unset(e){delete _$HY.r[e]},load:e=>_$HY.r[e]}));</script><!--xs-->`;
473
+ function generateHydrationScript({ eventNames = ["click", "input"], nonce } = {}) {
474
+ return `<script${
475
+ nonce ? ` nonce="${nonce}"` : ""
476
+ }>(e=>{let t=e=>e&&e.hasAttribute&&(e.hasAttribute("data-hk")?e:t(e.host&&e.host.nodeType?e.host:e.parentNode));["${eventNames.join(
477
+ '", "'
478
+ )}"].forEach((o=>document.addEventListener(o,(o=>{let s=o.composedPath&&o.composedPath()[0]||o.target,a=t(s);a&&!e.completed.has(a)&&e.events.push([a,o])}))))})(window._$HY||(_$HY={events:[],completed:new WeakSet,r:{},fe(){},init(e,t){_$HY.r[e]=[new Promise((e=>t=e)),t]},set(e,t,o){(o=_$HY.r[e])&&o[1](t),_$HY.r[e]=[t]},unset(e){delete _$HY.r[e]},load:e=>_$HY.r[e]}));</script><!--xs-->`;
415
479
  }
416
480
  function Hydration(props) {
417
481
  if (!sharedConfig.context.noHydrate) return props.children;
@@ -472,9 +536,7 @@ function Assets(props) {
472
536
  }
473
537
  function pipeToNodeWritable(code, writable, options = {}) {
474
538
  if (options.onReady) {
475
- options.onCompleteShell = ({
476
- write
477
- }) => {
539
+ options.onCompleteShell = ({ write }) => {
478
540
  options.onReady({
479
541
  write,
480
542
  startWriting() {
@@ -488,9 +550,7 @@ function pipeToNodeWritable(code, writable, options = {}) {
488
550
  }
489
551
  function pipeToWritable(code, writable, options = {}) {
490
552
  if (options.onReady) {
491
- options.onCompleteShell = ({
492
- write
493
- }) => {
553
+ options.onCompleteShell = ({ write }) => {
494
554
  options.onReady({
495
555
  write,
496
556
  startWriting() {
@@ -520,11 +580,19 @@ function ssrSpread(props, isSVG, skipChildren) {
520
580
  } else if (prop === "class" || prop === "className" || prop === "classList") {
521
581
  if (classResolved) continue;
522
582
  let n;
523
- result += `class="${(n = props.class) ? n + " " : ""}${(n = props.className) ? n + " " : ""}${ssrClassList(props.classList)}"`;
583
+ result += `class="${(n = props.class) ? n + " " : ""}${
584
+ (n = props.className) ? n + " " : ""
585
+ }${ssrClassList(props.classList)}"`;
524
586
  classResolved = true;
525
587
  } else if (BooleanAttributes.has(prop)) {
526
- if (value) result += prop;else continue;
527
- } else if (value == undefined || prop === "ref" || prop.slice(0, 2) === "on" || prop.slice(0, 5) === "prop:") {
588
+ if (value) result += prop;
589
+ else continue;
590
+ } else if (
591
+ value == undefined ||
592
+ prop === "ref" ||
593
+ prop.slice(0, 2) === "on" ||
594
+ prop.slice(0, 5) === "prop:"
595
+ ) {
528
596
  continue;
529
597
  } else {
530
598
  if (prop.slice(0, 5) === "attr:") prop = prop.slice(5);
@@ -548,7 +616,8 @@ function Dynamic(props) {
548
616
  const comp = p.component,
549
617
  t = typeof comp;
550
618
  if (comp) {
551
- if (t === "function") return comp(others);else if (t === "string") {
619
+ if (t === "function") return comp(others);
620
+ else if (t === "string") {
552
621
  return ssrElement(comp, others, undefined, true);
553
622
  }
554
623
  }
@@ -557,4 +626,38 @@ function Portal(props) {
557
626
  return "";
558
627
  }
559
628
 
560
- export { Assets, Dynamic, Hydration, HydrationScript, NoHydration, Portal, addEventListener, delegateEvents, escape, generateHydrationScript, getAssets, getHydrationKey, hydrate, insert, isDev, isServer, pipeToNodeWritable, pipeToWritable, render, renderToStream, renderToString, renderToStringAsync, resolveSSRNode, spread, ssr, ssrAttribute, ssrClassList, ssrElement, ssrHydrationKey, ssrSpread, ssrStyle, stringify, useAssets };
629
+ export {
630
+ Assets,
631
+ Dynamic,
632
+ Hydration,
633
+ HydrationScript,
634
+ NoHydration,
635
+ Portal,
636
+ addEventListener,
637
+ delegateEvents,
638
+ escape,
639
+ generateHydrationScript,
640
+ getAssets,
641
+ getHydrationKey,
642
+ hydrate,
643
+ insert,
644
+ isDev,
645
+ isServer,
646
+ pipeToNodeWritable,
647
+ pipeToWritable,
648
+ render,
649
+ renderToStream,
650
+ renderToString,
651
+ renderToStringAsync,
652
+ resolveSSRNode,
653
+ spread,
654
+ ssr,
655
+ ssrAttribute,
656
+ ssrClassList,
657
+ ssrElement,
658
+ ssrHydrationKey,
659
+ ssrSpread,
660
+ ssrStyle,
661
+ stringify,
662
+ useAssets
663
+ };