solid-js 1.8.2 → 1.8.3
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 +1 -1
- package/dist/dev.js +534 -299
- package/dist/server.js +170 -75
- package/dist/solid.cjs +1 -1
- package/dist/solid.js +461 -257
- package/h/dist/h.js +34 -8
- package/h/jsx-runtime/dist/jsx.js +1 -1
- package/h/jsx-runtime/types/index.d.ts +11 -8
- package/h/types/hyperscript.d.ts +11 -11
- package/html/dist/html.js +216 -94
- package/html/types/lit.d.ts +45 -31
- package/package.json +1 -1
- package/store/dist/dev.js +114 -42
- package/store/dist/server.js +19 -8
- package/store/dist/store.js +105 -39
- package/store/types/index.d.ts +21 -7
- package/store/types/modifiers.d.ts +6 -3
- package/store/types/mutable.d.ts +5 -2
- package/store/types/server.d.ts +12 -4
- package/store/types/store.d.ts +218 -61
- package/types/index.d.ts +72 -9
- package/types/reactive/array.d.ts +12 -4
- package/types/reactive/observable.d.ts +25 -17
- package/types/reactive/scheduler.d.ts +9 -6
- package/types/reactive/signal.d.ts +228 -140
- package/types/render/Suspense.d.ts +5 -5
- package/types/render/component.d.ts +62 -31
- package/types/render/flow.d.ts +43 -31
- package/types/render/hydration.d.ts +13 -13
- package/types/server/index.d.ts +57 -2
- package/types/server/reactive.d.ts +73 -42
- package/types/server/rendering.d.ts +166 -95
- package/universal/dist/dev.js +28 -12
- package/universal/dist/universal.js +28 -12
- package/universal/types/index.d.ts +3 -1
- package/universal/types/universal.d.ts +0 -1
- package/web/dist/dev.js +617 -81
- package/web/dist/server.js +175 -92
- package/web/dist/web.js +611 -80
- package/web/types/client.d.ts +2 -2
- package/web/types/core.d.ts +10 -1
- package/web/types/index.d.ts +27 -10
- package/web/types/server-mock.d.ts +47 -32
package/web/dist/server.js
CHANGED
|
@@ -1,24 +1,59 @@
|
|
|
1
|
-
import { sharedConfig, createRoot, splitProps } from
|
|
2
|
-
export {
|
|
3
|
-
|
|
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 { Feature, Serializer, GLOBAL_CONTEXT_API_SCRIPT, getCrossReferenceHeader } from "seroval";
|
|
4
15
|
|
|
5
|
-
const booleans = [
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
|
|
15
|
-
|
|
16
|
-
const GLOBAL_IDENTIFIER = '_$HY.r';
|
|
17
|
-
function createSerializer({
|
|
18
|
-
onData,
|
|
19
|
-
onDone,
|
|
20
|
-
scopeId
|
|
21
|
-
}) {
|
|
54
|
+
const ES2017FLAG = Feature.AggregateError | Feature.BigInt | Feature.BigIntTypedArray;
|
|
55
|
+
const GLOBAL_IDENTIFIER = "_$HY.r";
|
|
56
|
+
function createSerializer({ onData, onDone, scopeId }) {
|
|
22
57
|
return new Serializer({
|
|
23
58
|
scopeId,
|
|
24
59
|
globalIdentifier: GLOBAL_IDENTIFIER,
|
|
@@ -34,12 +69,11 @@ function getLocalHeaderScript(id) {
|
|
|
34
69
|
return getCrossReferenceHeader(id);
|
|
35
70
|
}
|
|
36
71
|
|
|
37
|
-
const VOID_ELEMENTS =
|
|
72
|
+
const VOID_ELEMENTS =
|
|
73
|
+
/^(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)$/i;
|
|
38
74
|
const REPLACE_SCRIPT = `function $df(e,n,o,t){if(n=document.getElementById(e),o=document.getElementById("pl-"+e)){for(;o&&8!==o.nodeType&&o.nodeValue!=="pl-"+e;)t=o.nextSibling,o.remove(),o=t;_$HY.done?o.remove():o.replaceWith(n.content)}n.remove(),_$HY.fe(e)}`;
|
|
39
75
|
function renderToString(code, options = {}) {
|
|
40
|
-
const {
|
|
41
|
-
renderId
|
|
42
|
-
} = options;
|
|
76
|
+
const { renderId } = options;
|
|
43
77
|
let scripts = "";
|
|
44
78
|
const serializer = createSerializer({
|
|
45
79
|
scopeId: renderId,
|
|
@@ -72,9 +106,7 @@ function renderToString(code, options = {}) {
|
|
|
72
106
|
return html;
|
|
73
107
|
}
|
|
74
108
|
function renderToStringAsync(code, options = {}) {
|
|
75
|
-
const {
|
|
76
|
-
timeoutMs = 30000
|
|
77
|
-
} = options;
|
|
109
|
+
const { timeoutMs = 30000 } = options;
|
|
78
110
|
let timeoutHandle;
|
|
79
111
|
const timeout = new Promise((_, reject) => {
|
|
80
112
|
timeoutHandle = setTimeout(() => reject("renderToString timed out"), timeoutMs);
|
|
@@ -85,12 +117,7 @@ function renderToStringAsync(code, options = {}) {
|
|
|
85
117
|
});
|
|
86
118
|
}
|
|
87
119
|
function renderToStream(code, options = {}) {
|
|
88
|
-
let {
|
|
89
|
-
nonce,
|
|
90
|
-
onCompleteShell,
|
|
91
|
-
onCompleteAll,
|
|
92
|
-
renderId
|
|
93
|
-
} = options;
|
|
120
|
+
let { nonce, onCompleteShell, onCompleteAll, renderId } = options;
|
|
94
121
|
let dispose;
|
|
95
122
|
const blockingPromises = [];
|
|
96
123
|
const pushTask = task => {
|
|
@@ -105,11 +132,12 @@ function renderToStream(code, options = {}) {
|
|
|
105
132
|
const checkEnd = () => {
|
|
106
133
|
if (!registry.size && !completed) {
|
|
107
134
|
writeTasks();
|
|
108
|
-
onCompleteAll &&
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
135
|
+
onCompleteAll &&
|
|
136
|
+
onCompleteAll({
|
|
137
|
+
write(v) {
|
|
138
|
+
!completed && buffer.write(v);
|
|
139
|
+
}
|
|
140
|
+
});
|
|
113
141
|
writable && writable.end();
|
|
114
142
|
completed = true;
|
|
115
143
|
setTimeout(dispose);
|
|
@@ -165,23 +193,29 @@ function renderToStream(code, options = {}) {
|
|
|
165
193
|
const first = html.indexOf(placeholder);
|
|
166
194
|
if (first === -1) return;
|
|
167
195
|
const last = html.indexOf(`<!--!$/${id}-->`, first + placeholder.length);
|
|
168
|
-
html = html.replace(
|
|
196
|
+
html = html.replace(
|
|
197
|
+
html.slice(first, last + placeholder.length + 1),
|
|
198
|
+
resolveSSRNode(payloadFn())
|
|
199
|
+
);
|
|
169
200
|
},
|
|
170
201
|
serialize(id, p, wait) {
|
|
171
202
|
const serverOnly = sharedConfig.context.noHydrate;
|
|
172
203
|
if (!firstFlushed && wait && typeof p === "object" && "then" in p) {
|
|
173
204
|
blockingPromises.push(p);
|
|
174
|
-
!serverOnly &&
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
205
|
+
!serverOnly &&
|
|
206
|
+
p
|
|
207
|
+
.then(d => {
|
|
208
|
+
serializer.write(id, d);
|
|
209
|
+
})
|
|
210
|
+
.catch(e => {
|
|
211
|
+
serializer.write(id, e);
|
|
212
|
+
});
|
|
179
213
|
} else if (!serverOnly) serializer.write(id, p);
|
|
180
214
|
},
|
|
181
215
|
registerFragment(key) {
|
|
182
216
|
if (!registry.has(key)) {
|
|
183
217
|
let resolve, reject;
|
|
184
|
-
const p = new Promise((r, rej) => (resolve = r, reject = rej));
|
|
218
|
+
const p = new Promise((r, rej) => ((resolve = r), (reject = rej)));
|
|
185
219
|
registry.set(key, {
|
|
186
220
|
resolve,
|
|
187
221
|
reject
|
|
@@ -190,10 +224,7 @@ function renderToStream(code, options = {}) {
|
|
|
190
224
|
}
|
|
191
225
|
return (value, error) => {
|
|
192
226
|
if (registry.has(key)) {
|
|
193
|
-
const {
|
|
194
|
-
resolve,
|
|
195
|
-
reject
|
|
196
|
-
} = registry.get(key);
|
|
227
|
+
const { resolve, reject } = registry.get(key);
|
|
197
228
|
registry.delete(key);
|
|
198
229
|
if (waitForFragments(registry, key)) {
|
|
199
230
|
resolve(true);
|
|
@@ -201,7 +232,9 @@ function renderToStream(code, options = {}) {
|
|
|
201
232
|
}
|
|
202
233
|
if ((value !== undefined || error) && !completed) {
|
|
203
234
|
if (!firstFlushed) {
|
|
204
|
-
Promise.resolve().then(
|
|
235
|
+
Promise.resolve().then(
|
|
236
|
+
() => (html = replacePlaceholder(html, key, value !== undefined ? value : ""))
|
|
237
|
+
);
|
|
205
238
|
error ? reject(error) : resolve(true);
|
|
206
239
|
} else {
|
|
207
240
|
buffer.write(`<template id="${key}">${value !== undefined ? value : " "}</template>`);
|
|
@@ -227,11 +260,12 @@ function renderToStream(code, options = {}) {
|
|
|
227
260
|
if (tasks.length) html = injectScripts(html, tasks, nonce);
|
|
228
261
|
buffer.write(html);
|
|
229
262
|
tasks = "";
|
|
230
|
-
onCompleteShell &&
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
263
|
+
onCompleteShell &&
|
|
264
|
+
onCompleteShell({
|
|
265
|
+
write(v) {
|
|
266
|
+
!completed && buffer.write(v);
|
|
267
|
+
}
|
|
268
|
+
});
|
|
235
269
|
}
|
|
236
270
|
return {
|
|
237
271
|
then(fn) {
|
|
@@ -254,7 +288,8 @@ function renderToStream(code, options = {}) {
|
|
|
254
288
|
buffer = writable = w;
|
|
255
289
|
buffer.write(tmp);
|
|
256
290
|
firstFlushed = true;
|
|
257
|
-
if (completed) writable.end();
|
|
291
|
+
if (completed) writable.end();
|
|
292
|
+
else setTimeout(flushEnd);
|
|
258
293
|
});
|
|
259
294
|
},
|
|
260
295
|
pipeTo(w) {
|
|
@@ -263,7 +298,7 @@ function renderToStream(code, options = {}) {
|
|
|
263
298
|
const encoder = new TextEncoder();
|
|
264
299
|
const writer = w.getWriter();
|
|
265
300
|
let resolve;
|
|
266
|
-
const p = new Promise(r => resolve = r);
|
|
301
|
+
const p = new Promise(r => (resolve = r));
|
|
267
302
|
writable = {
|
|
268
303
|
end() {
|
|
269
304
|
writer.releaseLock();
|
|
@@ -278,20 +313,21 @@ function renderToStream(code, options = {}) {
|
|
|
278
313
|
};
|
|
279
314
|
buffer.write(tmp);
|
|
280
315
|
firstFlushed = true;
|
|
281
|
-
if (completed) writable.end();
|
|
316
|
+
if (completed) writable.end();
|
|
317
|
+
else setTimeout(flushEnd);
|
|
282
318
|
return p;
|
|
283
319
|
});
|
|
284
320
|
}
|
|
285
321
|
};
|
|
286
322
|
}
|
|
287
323
|
function HydrationScript(props) {
|
|
288
|
-
const {
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
324
|
+
const { nonce } = sharedConfig.context;
|
|
325
|
+
return ssr(
|
|
326
|
+
generateHydrationScript({
|
|
327
|
+
nonce,
|
|
328
|
+
...props
|
|
329
|
+
})
|
|
330
|
+
);
|
|
295
331
|
}
|
|
296
332
|
function ssr(t, ...nodes) {
|
|
297
333
|
if (nodes.length) {
|
|
@@ -336,7 +372,8 @@ function ssrStyle(value) {
|
|
|
336
372
|
return result;
|
|
337
373
|
}
|
|
338
374
|
function ssrElement(tag, props, children, needsId) {
|
|
339
|
-
if (props == null) props = {};
|
|
375
|
+
if (props == null) props = {};
|
|
376
|
+
else if (typeof props === "function") props = props();
|
|
340
377
|
const skipChildren = VOID_ELEMENTS.test(tag);
|
|
341
378
|
const keys = Object.keys(props);
|
|
342
379
|
let result = `<${tag}${needsId ? ssrHydrationKey() : ""} `;
|
|
@@ -344,7 +381,8 @@ function ssrElement(tag, props, children, needsId) {
|
|
|
344
381
|
for (let i = 0; i < keys.length; i++) {
|
|
345
382
|
const prop = keys[i];
|
|
346
383
|
if (ChildProperties.has(prop)) {
|
|
347
|
-
if (children === undefined && !skipChildren)
|
|
384
|
+
if (children === undefined && !skipChildren)
|
|
385
|
+
children = prop === "innerHTML" ? props[prop] : escape(props[prop]);
|
|
348
386
|
continue;
|
|
349
387
|
}
|
|
350
388
|
const value = props[prop];
|
|
@@ -353,10 +391,14 @@ function ssrElement(tag, props, children, needsId) {
|
|
|
353
391
|
} else if (prop === "class" || prop === "className" || prop === "classList") {
|
|
354
392
|
if (classResolved) continue;
|
|
355
393
|
let n;
|
|
356
|
-
result += `class="${
|
|
394
|
+
result += `class="${
|
|
395
|
+
escape(((n = props.class) ? n + " " : "") + ((n = props.className) ? n + " " : ""), true) +
|
|
396
|
+
ssrClassList(props.classList)
|
|
397
|
+
}"`;
|
|
357
398
|
classResolved = true;
|
|
358
399
|
} else if (BooleanAttributes.has(prop)) {
|
|
359
|
-
if (value) result += prop;
|
|
400
|
+
if (value) result += prop;
|
|
401
|
+
else continue;
|
|
360
402
|
} else if (value == undefined || prop === "ref" || prop.slice(0, 2) === "on") {
|
|
361
403
|
continue;
|
|
362
404
|
} else {
|
|
@@ -364,16 +406,17 @@ function ssrElement(tag, props, children, needsId) {
|
|
|
364
406
|
}
|
|
365
407
|
if (i !== keys.length - 1) result += " ";
|
|
366
408
|
}
|
|
367
|
-
if (skipChildren)
|
|
368
|
-
|
|
369
|
-
|
|
409
|
+
if (skipChildren)
|
|
410
|
+
return {
|
|
411
|
+
t: result + "/>"
|
|
412
|
+
};
|
|
370
413
|
if (typeof children === "function") children = children();
|
|
371
414
|
return {
|
|
372
415
|
t: result + `>${resolveSSRNode(children, true)}</${tag}>`
|
|
373
416
|
};
|
|
374
417
|
}
|
|
375
418
|
function ssrAttribute(key, value, isBoolean) {
|
|
376
|
-
return isBoolean ? value ? " " + key : "" : value != null ? ` ${key}="${value}"` : "";
|
|
419
|
+
return isBoolean ? (value ? " " + key : "") : value != null ? ` ${key}="${value}"` : "";
|
|
377
420
|
}
|
|
378
421
|
function ssrHydrationKey() {
|
|
379
422
|
const hk = getHydrationKey();
|
|
@@ -417,12 +460,13 @@ function escape(s, attr) {
|
|
|
417
460
|
left = iDelim + 1;
|
|
418
461
|
iDelim = s.indexOf(delim, left);
|
|
419
462
|
} while (iDelim >= 0);
|
|
420
|
-
} else
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
463
|
+
} else
|
|
464
|
+
while (iAmp >= 0) {
|
|
465
|
+
if (left < iAmp) out += s.substring(left, iAmp);
|
|
466
|
+
out += "&";
|
|
467
|
+
left = iAmp + 1;
|
|
468
|
+
iAmp = s.indexOf("&", left);
|
|
469
|
+
}
|
|
426
470
|
return left < s.length ? out + s.substring(left) : out;
|
|
427
471
|
}
|
|
428
472
|
function resolveSSRNode(node, top) {
|
|
@@ -434,7 +478,7 @@ function resolveSSRNode(node, top) {
|
|
|
434
478
|
let mapped = "";
|
|
435
479
|
for (let i = 0, len = node.length; i < len; i++) {
|
|
436
480
|
if (!top && typeof prev !== "object" && typeof node[i] !== "object") mapped += `<!--!$-->`;
|
|
437
|
-
mapped += resolveSSRNode(prev = node[i]);
|
|
481
|
+
mapped += resolveSSRNode((prev = node[i]));
|
|
438
482
|
}
|
|
439
483
|
return mapped;
|
|
440
484
|
}
|
|
@@ -455,11 +499,12 @@ function getAssets() {
|
|
|
455
499
|
for (let i = 0, len = assets.length; i < len; i++) out += assets[i]();
|
|
456
500
|
return out;
|
|
457
501
|
}
|
|
458
|
-
function generateHydrationScript({
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
} =
|
|
462
|
-
|
|
502
|
+
function generateHydrationScript({ eventNames = ["click", "input"], nonce } = {}) {
|
|
503
|
+
return `<script${
|
|
504
|
+
nonce ? ` nonce="${nonce}"` : ""
|
|
505
|
+
}>window._$HY||(e=>{let t=e=>e&&e.hasAttribute&&(e.hasAttribute("data-hk")?e:t(e.host&&e.host.nodeType?e.host:e.parentNode));["${eventNames.join(
|
|
506
|
+
'", "'
|
|
507
|
+
)}"].forEach((o=>document.addEventListener(o,(o=>{let a=o.composedPath&&o.composedPath()[0]||o.target,s=t(a);s&&!e.completed.has(s)&&e.events.push([s,o])}))))})(_$HY={events:[],completed:new WeakSet,r:{},fe(){}});${getGlobalHeaderScript()}</script><!--xs-->`;
|
|
463
508
|
}
|
|
464
509
|
function Hydration(props) {
|
|
465
510
|
if (!sharedConfig.context.noHydrate) return props.children;
|
|
@@ -511,9 +556,7 @@ function Assets(props) {
|
|
|
511
556
|
}
|
|
512
557
|
function pipeToNodeWritable(code, writable, options = {}) {
|
|
513
558
|
if (options.onReady) {
|
|
514
|
-
options.onCompleteShell = ({
|
|
515
|
-
write
|
|
516
|
-
}) => {
|
|
559
|
+
options.onCompleteShell = ({ write }) => {
|
|
517
560
|
options.onReady({
|
|
518
561
|
write,
|
|
519
562
|
startWriting() {
|
|
@@ -527,9 +570,7 @@ function pipeToNodeWritable(code, writable, options = {}) {
|
|
|
527
570
|
}
|
|
528
571
|
function pipeToWritable(code, writable, options = {}) {
|
|
529
572
|
if (options.onReady) {
|
|
530
|
-
options.onCompleteShell = ({
|
|
531
|
-
write
|
|
532
|
-
}) => {
|
|
573
|
+
options.onCompleteShell = ({ write }) => {
|
|
533
574
|
options.onReady({
|
|
534
575
|
write,
|
|
535
576
|
startWriting() {
|
|
@@ -559,11 +600,19 @@ function ssrSpread(props, isSVG, skipChildren) {
|
|
|
559
600
|
} else if (prop === "class" || prop === "className" || prop === "classList") {
|
|
560
601
|
if (classResolved) continue;
|
|
561
602
|
let n;
|
|
562
|
-
result += `class="${(n = props.class) ? n + " " : ""}${
|
|
603
|
+
result += `class="${(n = props.class) ? n + " " : ""}${
|
|
604
|
+
(n = props.className) ? n + " " : ""
|
|
605
|
+
}${ssrClassList(props.classList)}"`;
|
|
563
606
|
classResolved = true;
|
|
564
607
|
} else if (BooleanAttributes.has(prop)) {
|
|
565
|
-
if (value) result += prop;
|
|
566
|
-
|
|
608
|
+
if (value) result += prop;
|
|
609
|
+
else continue;
|
|
610
|
+
} else if (
|
|
611
|
+
value == undefined ||
|
|
612
|
+
prop === "ref" ||
|
|
613
|
+
prop.slice(0, 2) === "on" ||
|
|
614
|
+
prop.slice(0, 5) === "prop:"
|
|
615
|
+
) {
|
|
567
616
|
continue;
|
|
568
617
|
} else {
|
|
569
618
|
if (prop.slice(0, 5) === "attr:") prop = prop.slice(5);
|
|
@@ -587,7 +636,8 @@ function Dynamic(props) {
|
|
|
587
636
|
const comp = p.component,
|
|
588
637
|
t = typeof comp;
|
|
589
638
|
if (comp) {
|
|
590
|
-
if (t === "function") return comp(others);
|
|
639
|
+
if (t === "function") return comp(others);
|
|
640
|
+
else if (t === "string") {
|
|
591
641
|
return ssrElement(comp, others, undefined, true);
|
|
592
642
|
}
|
|
593
643
|
}
|
|
@@ -596,4 +646,37 @@ function Portal(props) {
|
|
|
596
646
|
return "";
|
|
597
647
|
}
|
|
598
648
|
|
|
599
|
-
export {
|
|
649
|
+
export {
|
|
650
|
+
Assets,
|
|
651
|
+
Dynamic,
|
|
652
|
+
Hydration,
|
|
653
|
+
HydrationScript,
|
|
654
|
+
NoHydration,
|
|
655
|
+
Portal,
|
|
656
|
+
addEventListener,
|
|
657
|
+
delegateEvents,
|
|
658
|
+
escape,
|
|
659
|
+
generateHydrationScript,
|
|
660
|
+
getAssets,
|
|
661
|
+
getHydrationKey,
|
|
662
|
+
hydrate,
|
|
663
|
+
insert,
|
|
664
|
+
isDev,
|
|
665
|
+
isServer,
|
|
666
|
+
pipeToNodeWritable,
|
|
667
|
+
pipeToWritable,
|
|
668
|
+
render,
|
|
669
|
+
renderToStream,
|
|
670
|
+
renderToString,
|
|
671
|
+
renderToStringAsync,
|
|
672
|
+
resolveSSRNode,
|
|
673
|
+
spread,
|
|
674
|
+
ssr,
|
|
675
|
+
ssrAttribute,
|
|
676
|
+
ssrClassList,
|
|
677
|
+
ssrElement,
|
|
678
|
+
ssrHydrationKey,
|
|
679
|
+
ssrSpread,
|
|
680
|
+
ssrStyle,
|
|
681
|
+
useAssets
|
|
682
|
+
};
|