sibujs 1.0.0-beta.1
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/LICENSE +21 -0
- package/README.md +1630 -0
- package/dist/browser.cjs +815 -0
- package/dist/browser.d.cts +174 -0
- package/dist/browser.d.ts +174 -0
- package/dist/browser.js +458 -0
- package/dist/build.cjs +4970 -0
- package/dist/build.d.cts +630 -0
- package/dist/build.d.ts +630 -0
- package/dist/build.js +2478 -0
- package/dist/cdn.global.js +115 -0
- package/dist/chunk-27QC4FPL.js +67 -0
- package/dist/chunk-2ABBWCGC.js +65 -0
- package/dist/chunk-2MUNQYZ7.js +26 -0
- package/dist/chunk-2PSPKNUI.js +1711 -0
- package/dist/chunk-35CDLDX5.js +1758 -0
- package/dist/chunk-36MU4CFV.js +41 -0
- package/dist/chunk-3FIQOFI6.js +182 -0
- package/dist/chunk-3GHNC2BN.js +28 -0
- package/dist/chunk-3HLWWEPU.js +909 -0
- package/dist/chunk-3IVI3J54.js +252 -0
- package/dist/chunk-3KZ72WNW.js +944 -0
- package/dist/chunk-4AU64SQV.js +182 -0
- package/dist/chunk-4MOK7HAR.js +84 -0
- package/dist/chunk-4QK6FBDH.js +1429 -0
- package/dist/chunk-566Z7HXB.js +737 -0
- package/dist/chunk-5CRBB7XP.js +358 -0
- package/dist/chunk-5G67D3IZ.js +168 -0
- package/dist/chunk-5NCPAWBE.js +99 -0
- package/dist/chunk-5O2RKXR3.js +1444 -0
- package/dist/chunk-6BTBDO6A.js +633 -0
- package/dist/chunk-6IWEHW57.js +43 -0
- package/dist/chunk-6JGMNCD6.js +282 -0
- package/dist/chunk-6QRLJNXR.js +1425 -0
- package/dist/chunk-7HM5UE5T.js +270 -0
- package/dist/chunk-7JOLTGUH.js +58 -0
- package/dist/chunk-7MCWJCQK.js +909 -0
- package/dist/chunk-7RIIFP3E.js +1758 -0
- package/dist/chunk-7UASYN3G.js +254 -0
- package/dist/chunk-7W2WYHDI.js +741 -0
- package/dist/chunk-7Y35RDSJ.js +872 -0
- package/dist/chunk-A65GFJBL.js +65 -0
- package/dist/chunk-AD6ZIEDK.js +67 -0
- package/dist/chunk-AK5Y72F3.js +1426 -0
- package/dist/chunk-APOMMWH4.js +282 -0
- package/dist/chunk-ARZVTWIQ.js +1750 -0
- package/dist/chunk-AWWBM2BI.js +664 -0
- package/dist/chunk-AX5VEQTY.js +58 -0
- package/dist/chunk-AYTXVOW3.js +1708 -0
- package/dist/chunk-BG4A246G.js +1746 -0
- package/dist/chunk-BNFJJA2L.js +1425 -0
- package/dist/chunk-BPKPBVU5.js +59 -0
- package/dist/chunk-BPKPPSXC.js +282 -0
- package/dist/chunk-BPWKKK7F.js +1711 -0
- package/dist/chunk-CCKX6YTC.js +1735 -0
- package/dist/chunk-CIF5Z3MP.js +58 -0
- package/dist/chunk-CSXYU7IO.js +457 -0
- package/dist/chunk-D6JD4FDC.js +26 -0
- package/dist/chunk-E7NGA7X2.js +59 -0
- package/dist/chunk-EEPPJKAE.js +443 -0
- package/dist/chunk-EJMYGAGQ.js +717 -0
- package/dist/chunk-EL6Z5MDY.js +55 -0
- package/dist/chunk-EP7VRLEB.js +41 -0
- package/dist/chunk-ETMEC6FH.js +99 -0
- package/dist/chunk-EZ2WHYVL.js +65 -0
- package/dist/chunk-EZRVMSZK.js +67 -0
- package/dist/chunk-F2TRGINX.js +254 -0
- package/dist/chunk-F5JCIH3Q.js +642 -0
- package/dist/chunk-FGK3JKMN.js +909 -0
- package/dist/chunk-FQWPKSTD.js +1437 -0
- package/dist/chunk-FWHVLMCI.js +26 -0
- package/dist/chunk-GBEYQRO2.js +303 -0
- package/dist/chunk-GBLES3NK.js +248 -0
- package/dist/chunk-GQVGUQW6.js +1436 -0
- package/dist/chunk-HCV2T76T.js +457 -0
- package/dist/chunk-HS7ZKVPR.js +182 -0
- package/dist/chunk-HXDVV7HZ.js +909 -0
- package/dist/chunk-IB23VMO3.js +1746 -0
- package/dist/chunk-IEMZ7RTT.js +99 -0
- package/dist/chunk-IPGRSN42.js +1750 -0
- package/dist/chunk-IVMOK2QN.js +1750 -0
- package/dist/chunk-JCLGQO7T.js +443 -0
- package/dist/chunk-JDXL7KDB.js +1436 -0
- package/dist/chunk-JIIFW636.js +270 -0
- package/dist/chunk-JWGEEH7H.js +944 -0
- package/dist/chunk-K2BESAG7.js +1688 -0
- package/dist/chunk-K2U5YGF4.js +877 -0
- package/dist/chunk-K45FQ4Y4.js +175 -0
- package/dist/chunk-K7BPE427.js +1432 -0
- package/dist/chunk-KL3266RS.js +26 -0
- package/dist/chunk-KNN4P7DZ.js +84 -0
- package/dist/chunk-KP2DZH5Q.js +254 -0
- package/dist/chunk-KZHAJSQR.js +1636 -0
- package/dist/chunk-LBKGHMQV.js +1750 -0
- package/dist/chunk-LBTEPL7A.js +1731 -0
- package/dist/chunk-LEBBPTDB.js +1444 -0
- package/dist/chunk-LLH63WVQ.js +98 -0
- package/dist/chunk-LWVR2C4G.js +1711 -0
- package/dist/chunk-M3MDTVV2.js +896 -0
- package/dist/chunk-M5GNLDEO.js +303 -0
- package/dist/chunk-MFHVGKET.js +267 -0
- package/dist/chunk-MGWSG3PM.js +358 -0
- package/dist/chunk-MJNB47HB.js +19 -0
- package/dist/chunk-MLKGABMK.js +9 -0
- package/dist/chunk-MQWTY3JY.js +944 -0
- package/dist/chunk-MZZOQHNI.js +642 -0
- package/dist/chunk-NIHWGZS4.js +1426 -0
- package/dist/chunk-NSVVHQK5.js +41 -0
- package/dist/chunk-NVI2WE7D.js +443 -0
- package/dist/chunk-O7QBO3PH.js +58 -0
- package/dist/chunk-OAUPQBO2.js +270 -0
- package/dist/chunk-OB2LMD7C.js +297 -0
- package/dist/chunk-OHEYBWQU.js +58 -0
- package/dist/chunk-OI6OXUHJ.js +443 -0
- package/dist/chunk-OX2VMRMV.js +633 -0
- package/dist/chunk-P4FYE5TX.js +866 -0
- package/dist/chunk-P5KFWM4H.js +98 -0
- package/dist/chunk-PUMLE7RJ.js +1711 -0
- package/dist/chunk-Q4MFANBF.js +282 -0
- package/dist/chunk-QLEKZMMU.js +282 -0
- package/dist/chunk-RGGNGVO3.js +98 -0
- package/dist/chunk-RKJDRVV6.js +443 -0
- package/dist/chunk-S5BHU353.js +43 -0
- package/dist/chunk-SHQUSFH7.js +1426 -0
- package/dist/chunk-SMB4DBMD.js +182 -0
- package/dist/chunk-SNYHQP3D.js +743 -0
- package/dist/chunk-T24L3TBF.js +1717 -0
- package/dist/chunk-TAQNSOKT.js +692 -0
- package/dist/chunk-TDNY4SUA.js +41 -0
- package/dist/chunk-TNNF56IQ.js +1750 -0
- package/dist/chunk-TR7E6LYX.js +457 -0
- package/dist/chunk-URWUFH45.js +98 -0
- package/dist/chunk-UUSIH3XH.js +1429 -0
- package/dist/chunk-UYFNXLKR.js +1436 -0
- package/dist/chunk-V6F7KUWD.js +270 -0
- package/dist/chunk-VCZLXRMR.js +254 -0
- package/dist/chunk-VDHXSSBT.js +1426 -0
- package/dist/chunk-VM4QMKVK.js +254 -0
- package/dist/chunk-VWGYKYL2.js +737 -0
- package/dist/chunk-VX2OFBJN.js +1426 -0
- package/dist/chunk-VXVIE6DG.js +84 -0
- package/dist/chunk-W4OH7HG4.js +40 -0
- package/dist/chunk-WBVJX4GZ.js +98 -0
- package/dist/chunk-WDU2ZV4I.js +1426 -0
- package/dist/chunk-X6VUCICU.js +457 -0
- package/dist/chunk-XAY7FM7Y.js +618 -0
- package/dist/chunk-XJZ5Z2CM.js +642 -0
- package/dist/chunk-XKVFQTJJ.js +254 -0
- package/dist/chunk-XRLFASCY.js +22 -0
- package/dist/chunk-XYU6TZOW.js +182 -0
- package/dist/chunk-Y745CBVB.js +944 -0
- package/dist/chunk-YLBJSXYY.js +944 -0
- package/dist/chunk-YQJIKVPZ.js +1429 -0
- package/dist/chunk-YRM2VCZF.js +457 -0
- package/dist/chunk-YS33KBVJ.js +944 -0
- package/dist/chunk-Z27DZPDG.js +41 -0
- package/dist/chunk-ZXQ5NAEN.js +32 -0
- package/dist/contracts-B552GopR.d.cts +245 -0
- package/dist/contracts-B552GopR.d.ts +245 -0
- package/dist/contracts-Bg1ECISC.d.cts +245 -0
- package/dist/contracts-Bg1ECISC.d.ts +245 -0
- package/dist/contracts-CMriKJ6P.d.cts +245 -0
- package/dist/contracts-CMriKJ6P.d.ts +245 -0
- package/dist/contracts-DOrhwbke.d.cts +245 -0
- package/dist/contracts-DOrhwbke.d.ts +245 -0
- package/dist/data.cjs +1373 -0
- package/dist/data.d.cts +434 -0
- package/dist/data.d.ts +434 -0
- package/dist/data.js +945 -0
- package/dist/devtools.cjs +1357 -0
- package/dist/devtools.d.cts +473 -0
- package/dist/devtools.d.ts +473 -0
- package/dist/devtools.js +1084 -0
- package/dist/ecosystem.cjs +1046 -0
- package/dist/ecosystem.d.cts +247 -0
- package/dist/ecosystem.d.ts +247 -0
- package/dist/ecosystem.js +369 -0
- package/dist/extras.cjs +8457 -0
- package/dist/extras.d.cts +2356 -0
- package/dist/extras.d.ts +2356 -0
- package/dist/extras.js +5152 -0
- package/dist/index.cjs +2648 -0
- package/dist/index.d.cts +869 -0
- package/dist/index.d.ts +869 -0
- package/dist/index.js +386 -0
- package/dist/motion.cjs +604 -0
- package/dist/motion.d.cts +146 -0
- package/dist/motion.d.ts +146 -0
- package/dist/motion.js +346 -0
- package/dist/patterns.cjs +815 -0
- package/dist/patterns.d.cts +163 -0
- package/dist/patterns.d.ts +163 -0
- package/dist/patterns.js +296 -0
- package/dist/performance.cjs +927 -0
- package/dist/performance.d.cts +416 -0
- package/dist/performance.d.ts +416 -0
- package/dist/performance.js +654 -0
- package/dist/plugins.cjs +2487 -0
- package/dist/plugins.d.cts +393 -0
- package/dist/plugins.d.ts +393 -0
- package/dist/plugins.js +1504 -0
- package/dist/signal-BnWpq6WB.d.cts +5 -0
- package/dist/signal-BnWpq6WB.d.ts +5 -0
- package/dist/src/components/ErrorBoundary.d.ts +15 -0
- package/dist/src/components/ErrorBoundary.js +119 -0
- package/dist/src/core/catch.d.ts +11 -0
- package/dist/src/core/catch.js +28 -0
- package/dist/src/core/each.d.ts +13 -0
- package/dist/src/core/each.js +68 -0
- package/dist/src/core/for.d.ts +12 -0
- package/dist/src/core/for.js +67 -0
- package/dist/src/core/html.d.ts +137 -0
- package/dist/src/core/html.js +155 -0
- package/dist/src/core/htmlIf.d.ts +11 -0
- package/dist/src/core/htmlIf.js +18 -0
- package/dist/src/core/lazy.d.ts +7 -0
- package/dist/src/core/lazy.js +16 -0
- package/dist/src/core/mount.d.ts +7 -0
- package/dist/src/core/mount.js +12 -0
- package/dist/src/core/slots.d.ts +3 -0
- package/dist/src/core/slots.js +3 -0
- package/dist/src/core/suspense.d.ts +10 -0
- package/dist/src/core/suspense.js +33 -0
- package/dist/src/core/tagFactory.d.ts +13 -0
- package/dist/src/core/tagFactory.js +86 -0
- package/dist/src/core/test.d.ts +11 -0
- package/dist/src/core/test.js +28 -0
- package/dist/src/core/types.d.ts +2 -0
- package/dist/src/core/types.js +1 -0
- package/dist/src/core/useComputed.d.ts +6 -0
- package/dist/src/core/useComputed.js +30 -0
- package/dist/src/core/useEffect.d.ts +6 -0
- package/dist/src/core/useEffect.js +23 -0
- package/dist/src/core/useState.d.ts +10 -0
- package/dist/src/core/useState.js +34 -0
- package/dist/src/core/useStore.d.ts +19 -0
- package/dist/src/core/useStore.js +53 -0
- package/dist/src/core/useWatch.d.ts +8 -0
- package/dist/src/core/useWatch.js +23 -0
- package/dist/src/plugins/i18n.d.ts +6 -0
- package/dist/src/plugins/i18n.js +16 -0
- package/dist/src/plugins/router.d.ts +188 -0
- package/dist/src/plugins/router.js +1178 -0
- package/dist/src/reactivity/bindAttribute.d.ts +5 -0
- package/dist/src/reactivity/bindAttribute.js +31 -0
- package/dist/src/reactivity/bindChildNode.d.ts +10 -0
- package/dist/src/reactivity/bindChildNode.js +46 -0
- package/dist/src/reactivity/bindTextNode.d.ts +10 -0
- package/dist/src/reactivity/bindTextNode.js +27 -0
- package/dist/src/reactivity/signal.d.ts +3 -0
- package/dist/src/reactivity/signal.js +1 -0
- package/dist/src/reactivity/track.d.ts +18 -0
- package/dist/src/reactivity/track.js +73 -0
- package/dist/src/reactivity/useComputed.d.ts +6 -0
- package/dist/src/reactivity/useComputed.js +30 -0
- package/dist/src/reactivity/useEffect.d.ts +6 -0
- package/dist/src/reactivity/useEffect.js +23 -0
- package/dist/src/reactivity/useState.d.ts +10 -0
- package/dist/src/reactivity/useState.js +34 -0
- package/dist/src/reactivity/useStore.d.ts +19 -0
- package/dist/src/reactivity/useStore.js +53 -0
- package/dist/src/reactivity/useWatch.d.ts +8 -0
- package/dist/src/reactivity/useWatch.js +23 -0
- package/dist/src/utils/sanitize.d.ts +1 -0
- package/dist/src/utils/sanitize.js +8 -0
- package/dist/ssr-27FOM46T.js +35 -0
- package/dist/ssr-GFUTTSJD.js +22 -0
- package/dist/ssr-K7DCR6BZ.js +35 -0
- package/dist/ssr-O6LFMRFP.js +35 -0
- package/dist/ssr-QZEVGMMK.js +35 -0
- package/dist/ssr-SGVBCAGC.js +35 -0
- package/dist/ssr-UB2IXCYX.js +35 -0
- package/dist/ssr-XBZQNV4O.js +22 -0
- package/dist/ssr-Y76FSXDU.js +35 -0
- package/dist/ssr-YQJ4AYBD.js +35 -0
- package/dist/ssr.cjs +1757 -0
- package/dist/ssr.d.cts +478 -0
- package/dist/ssr.d.ts +478 -0
- package/dist/ssr.js +743 -0
- package/dist/tagFactory-CZPO4RXF.d.cts +34 -0
- package/dist/tagFactory-CZPO4RXF.d.ts +34 -0
- package/dist/tagFactory-CgImPVMY.d.cts +22 -0
- package/dist/tagFactory-CgImPVMY.d.ts +22 -0
- package/dist/tagFactory-Cw1iv5if.d.cts +22 -0
- package/dist/tagFactory-Cw1iv5if.d.ts +22 -0
- package/dist/tagFactory-DeAXq9ef.d.cts +30 -0
- package/dist/tagFactory-DeAXq9ef.d.ts +30 -0
- package/dist/tagFactory-SkY0a7L1.d.cts +22 -0
- package/dist/tagFactory-SkY0a7L1.d.ts +22 -0
- package/dist/testing.cjs +1919 -0
- package/dist/testing.d.cts +491 -0
- package/dist/testing.d.ts +491 -0
- package/dist/testing.js +1862 -0
- package/dist/ui.cjs +1497 -0
- package/dist/ui.d.cts +264 -0
- package/dist/ui.d.ts +264 -0
- package/dist/ui.js +900 -0
- package/dist/widgets.cjs +919 -0
- package/dist/widgets.d.cts +165 -0
- package/dist/widgets.d.ts +165 -0
- package/dist/widgets.js +545 -0
- package/package.json +134 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { track } from "./track";
|
|
2
|
+
import { sanitize } from "../utils/sanitize";
|
|
3
|
+
/**
|
|
4
|
+
* Bind a reactive getter to an element attribute.
|
|
5
|
+
* Returns a teardown that stops all future updates.
|
|
6
|
+
*/
|
|
7
|
+
export function bindAttribute(el, attr, getter) {
|
|
8
|
+
function commit() {
|
|
9
|
+
let value;
|
|
10
|
+
try {
|
|
11
|
+
value = getter();
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
const str = (attr === "href" || attr === "title")
|
|
17
|
+
? sanitize(String(value))
|
|
18
|
+
: String(value);
|
|
19
|
+
// If binding an input value or checked state, update the property
|
|
20
|
+
if ((attr === "value" || attr === "checked") && attr in el) {
|
|
21
|
+
// @ts-ignore
|
|
22
|
+
el[attr] = attr === "checked" ? Boolean(value) : str;
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
el.setAttribute(attr, str);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
// Initial run + reactive updates
|
|
29
|
+
const teardown = track(commit, commit);
|
|
30
|
+
return teardown;
|
|
31
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { NodeChild } from "../core/types";
|
|
2
|
+
/**
|
|
3
|
+
* Binds a reactive getter that returns NodeChild or NodeChild[] next to a placeholder comment.
|
|
4
|
+
* Render errors are swallowed to preserve the last successful state.
|
|
5
|
+
*
|
|
6
|
+
* @param placeholder Anchor Comment node for insertion
|
|
7
|
+
* @param getter Function returning NodeChild or NodeChild[] to render
|
|
8
|
+
* @returns Teardown function to cancel the binding
|
|
9
|
+
*/
|
|
10
|
+
export declare function bindChildNode(placeholder: Comment, getter: () => NodeChild | NodeChild[]): () => void;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { track } from "./track";
|
|
2
|
+
/**
|
|
3
|
+
* Binds a reactive getter that returns NodeChild or NodeChild[] next to a placeholder comment.
|
|
4
|
+
* Render errors are swallowed to preserve the last successful state.
|
|
5
|
+
*
|
|
6
|
+
* @param placeholder Anchor Comment node for insertion
|
|
7
|
+
* @param getter Function returning NodeChild or NodeChild[] to render
|
|
8
|
+
* @returns Teardown function to cancel the binding
|
|
9
|
+
*/
|
|
10
|
+
export function bindChildNode(placeholder, getter) {
|
|
11
|
+
let lastNodes = [];
|
|
12
|
+
function commit() {
|
|
13
|
+
let result;
|
|
14
|
+
try {
|
|
15
|
+
result = getter();
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
// Remove previously inserted nodes
|
|
21
|
+
for (const node of lastNodes) {
|
|
22
|
+
node.parentNode?.removeChild(node);
|
|
23
|
+
}
|
|
24
|
+
lastNodes = [];
|
|
25
|
+
if (result == null)
|
|
26
|
+
return;
|
|
27
|
+
const parent = placeholder.parentNode;
|
|
28
|
+
const anchor = placeholder.nextSibling;
|
|
29
|
+
const newNodes = [];
|
|
30
|
+
const insertItem = (item) => {
|
|
31
|
+
const node = item instanceof Node ? item : document.createTextNode(String(item));
|
|
32
|
+
parent.insertBefore(node, anchor);
|
|
33
|
+
newNodes.push(node);
|
|
34
|
+
};
|
|
35
|
+
if (Array.isArray(result)) {
|
|
36
|
+
for (const item of result)
|
|
37
|
+
insertItem(item);
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
insertItem(result);
|
|
41
|
+
}
|
|
42
|
+
lastNodes = newNodes;
|
|
43
|
+
}
|
|
44
|
+
// Initial render and reactive subscription
|
|
45
|
+
return track(commit, commit);
|
|
46
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Binds a reactive getter to a Text node, updating its content reactively.
|
|
3
|
+
* Render errors are swallowed to preserve last displayed text.
|
|
4
|
+
* Sanitizes text to prevent HTML injection.
|
|
5
|
+
*
|
|
6
|
+
* @param textNode Target Text node whose content will be updated
|
|
7
|
+
* @param getter Function returning string or number to display
|
|
8
|
+
* @returns Teardown function to cancel the binding
|
|
9
|
+
*/
|
|
10
|
+
export declare function bindTextNode(textNode: Text, getter: () => string | number): () => void;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { track } from "./track";
|
|
2
|
+
import { sanitize } from "../utils/sanitize";
|
|
3
|
+
/**
|
|
4
|
+
* Binds a reactive getter to a Text node, updating its content reactively.
|
|
5
|
+
* Render errors are swallowed to preserve last displayed text.
|
|
6
|
+
* Sanitizes text to prevent HTML injection.
|
|
7
|
+
*
|
|
8
|
+
* @param textNode Target Text node whose content will be updated
|
|
9
|
+
* @param getter Function returning string or number to display
|
|
10
|
+
* @returns Teardown function to cancel the binding
|
|
11
|
+
*/
|
|
12
|
+
export function bindTextNode(textNode, getter) {
|
|
13
|
+
function commit() {
|
|
14
|
+
let value;
|
|
15
|
+
try {
|
|
16
|
+
value = getter();
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
// Sanitize output to escape HTML
|
|
22
|
+
textNode.textContent = sanitize(String(value));
|
|
23
|
+
}
|
|
24
|
+
// Initial render and reactive subscription
|
|
25
|
+
const teardown = track(commit, commit);
|
|
26
|
+
return teardown;
|
|
27
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ReactiveSignal } from "./signal";
|
|
2
|
+
type Subscriber = () => void;
|
|
3
|
+
/**
|
|
4
|
+
* Track dependencies of an effect or computed subscriber.
|
|
5
|
+
* Returns a teardown function to remove all subscriptions.
|
|
6
|
+
*/
|
|
7
|
+
export declare function track(effectFn: () => void, subscriber: Subscriber): () => void;
|
|
8
|
+
/**
|
|
9
|
+
* Record that the current subscriber depends on this signal.
|
|
10
|
+
* Called by signal.get().
|
|
11
|
+
*/
|
|
12
|
+
export declare function recordDependency(signal: ReactiveSignal): void;
|
|
13
|
+
/**
|
|
14
|
+
* Notify all subscribers of a given signal change.
|
|
15
|
+
* Called by signal.set().
|
|
16
|
+
*/
|
|
17
|
+
export declare function notifySubscribers(signal: ReactiveSignal): void;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
// Stack to support nested subscribers
|
|
2
|
+
const subscriberStack = [];
|
|
3
|
+
let currentSubscriber = null;
|
|
4
|
+
// Maps to track dependencies and allow cleanup
|
|
5
|
+
const subscriberDependencies = new WeakMap();
|
|
6
|
+
const signalSubscribers = new WeakMap();
|
|
7
|
+
/**
|
|
8
|
+
* Track dependencies of an effect or computed subscriber.
|
|
9
|
+
* Returns a teardown function to remove all subscriptions.
|
|
10
|
+
*/
|
|
11
|
+
export function track(effectFn, subscriber) {
|
|
12
|
+
// Cleanup previous dependencies
|
|
13
|
+
cleanup(subscriber);
|
|
14
|
+
// Push subscriber to stack and set current
|
|
15
|
+
subscriberStack.push(subscriber);
|
|
16
|
+
currentSubscriber = subscriber;
|
|
17
|
+
// Execute the effect, during which recordDependency will be called by signals
|
|
18
|
+
effectFn();
|
|
19
|
+
// Pop subscriber and restore previous
|
|
20
|
+
subscriberStack.pop();
|
|
21
|
+
currentSubscriber = subscriberStack[subscriberStack.length - 1] || null;
|
|
22
|
+
// Return teardown to allow manual unsubscription
|
|
23
|
+
return () => cleanup(subscriber);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Record that the current subscriber depends on this signal.
|
|
27
|
+
* Called by signal.get().
|
|
28
|
+
*/
|
|
29
|
+
export function recordDependency(signal) {
|
|
30
|
+
if (!currentSubscriber)
|
|
31
|
+
return;
|
|
32
|
+
let deps = subscriberDependencies.get(currentSubscriber);
|
|
33
|
+
if (!deps) {
|
|
34
|
+
deps = new Set();
|
|
35
|
+
subscriberDependencies.set(currentSubscriber, deps);
|
|
36
|
+
}
|
|
37
|
+
if (!deps.has(signal)) {
|
|
38
|
+
deps.add(signal);
|
|
39
|
+
let subs = signalSubscribers.get(signal);
|
|
40
|
+
if (!subs) {
|
|
41
|
+
subs = new Set();
|
|
42
|
+
signalSubscribers.set(signal, subs);
|
|
43
|
+
}
|
|
44
|
+
subs.add(currentSubscriber);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Notify all subscribers of a given signal change.
|
|
49
|
+
* Called by signal.set().
|
|
50
|
+
*/
|
|
51
|
+
export function notifySubscribers(signal) {
|
|
52
|
+
const subs = signalSubscribers.get(signal);
|
|
53
|
+
if (!subs)
|
|
54
|
+
return;
|
|
55
|
+
// Clone to avoid issues if subscribers modify subscriptions during notification
|
|
56
|
+
for (const sub of Array.from(subs)) {
|
|
57
|
+
sub();
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Remove a subscriber from all signal dependency lists.
|
|
62
|
+
*/
|
|
63
|
+
function cleanup(subscriber) {
|
|
64
|
+
const deps = subscriberDependencies.get(subscriber);
|
|
65
|
+
if (!deps)
|
|
66
|
+
return;
|
|
67
|
+
for (const signal of deps) {
|
|
68
|
+
const subs = signalSubscribers.get(signal);
|
|
69
|
+
subs?.delete(subscriber);
|
|
70
|
+
}
|
|
71
|
+
deps.clear();
|
|
72
|
+
subscriberDependencies.delete(subscriber);
|
|
73
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* useComputed creates a derived reactive signal whose value updates when dependencies change.
|
|
3
|
+
* @param getter Function returning computed value based on reactive signals.
|
|
4
|
+
* @returns Getter function for the computed value.
|
|
5
|
+
*/
|
|
6
|
+
export declare function useComputed<T>(getter: () => T): () => T;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { track, recordDependency, notifySubscribers } from "./track";
|
|
2
|
+
/**
|
|
3
|
+
* useComputed creates a derived reactive signal whose value updates when dependencies change.
|
|
4
|
+
* @param getter Function returning computed value based on reactive signals.
|
|
5
|
+
* @returns Getter function for the computed value.
|
|
6
|
+
*/
|
|
7
|
+
export function useComputed(getter) {
|
|
8
|
+
// Initial value computation
|
|
9
|
+
let value = getter();
|
|
10
|
+
// Signal object representing this computed's identity
|
|
11
|
+
const computedSignal = {};
|
|
12
|
+
// Recompute function subscribed to dependency changes
|
|
13
|
+
const recompute = () => {
|
|
14
|
+
const next = getter();
|
|
15
|
+
if (Object.is(next, value))
|
|
16
|
+
return;
|
|
17
|
+
value = next;
|
|
18
|
+
notifySubscribers(computedSignal);
|
|
19
|
+
};
|
|
20
|
+
// Track dependencies and register recompute callback
|
|
21
|
+
track(recompute, recompute);
|
|
22
|
+
/**
|
|
23
|
+
* Getter for the computed value.
|
|
24
|
+
* Registers a dependency on this computed signal and returns the current value.
|
|
25
|
+
*/
|
|
26
|
+
return function computedGetter() {
|
|
27
|
+
recordDependency(computedSignal);
|
|
28
|
+
return value;
|
|
29
|
+
};
|
|
30
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { track } from "./track";
|
|
2
|
+
/**
|
|
3
|
+
* useEffect runs the provided effectFn immediately and re-runs it whenever
|
|
4
|
+
* any reactive dependency changes.
|
|
5
|
+
* Returns a cleanup function to stop further executions.
|
|
6
|
+
*/
|
|
7
|
+
export function useEffect(effectFn) {
|
|
8
|
+
// Internal cleanup handle for previous subscription
|
|
9
|
+
let cleanupHandle = () => { };
|
|
10
|
+
// Subscriber function that re-schedules the effect when dependencies notify
|
|
11
|
+
const subscriber = () => {
|
|
12
|
+
// Cleanup previous subscriptions before re-running
|
|
13
|
+
cleanupHandle();
|
|
14
|
+
// Track the effect and update cleanupHandle
|
|
15
|
+
cleanupHandle = track(effectFn, subscriber);
|
|
16
|
+
};
|
|
17
|
+
// Initial execution and subscription
|
|
18
|
+
cleanupHandle = track(effectFn, subscriber);
|
|
19
|
+
// Return a function to cleanup and stop any further effect runs
|
|
20
|
+
return () => {
|
|
21
|
+
cleanupHandle();
|
|
22
|
+
};
|
|
23
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
type SetState<T> = (next: T | ((prev: T) => T)) => void;
|
|
2
|
+
type StateTuple<T> = [() => T, SetState<T>];
|
|
3
|
+
/**
|
|
4
|
+
* useState creates a reactive signal that holds a value of type T.
|
|
5
|
+
* Returns a tuple: [getter, setter].
|
|
6
|
+
* - getter(): registers dependency and returns the current state value.
|
|
7
|
+
* - setter(next): updates the state and notifies subscribers if changed.
|
|
8
|
+
*/
|
|
9
|
+
export declare function useState<T>(initial: T): StateTuple<T>;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { recordDependency, notifySubscribers } from "./track";
|
|
2
|
+
/**
|
|
3
|
+
* useState creates a reactive signal that holds a value of type T.
|
|
4
|
+
* Returns a tuple: [getter, setter].
|
|
5
|
+
* - getter(): registers dependency and returns the current state value.
|
|
6
|
+
* - setter(next): updates the state and notifies subscribers if changed.
|
|
7
|
+
*/
|
|
8
|
+
export function useState(initial) {
|
|
9
|
+
// Internal state container acts as the ReactiveSignal
|
|
10
|
+
const state = { value: initial };
|
|
11
|
+
/**
|
|
12
|
+
* Getter for the state value.
|
|
13
|
+
* Registers this call as a dependency on the current subscriber.
|
|
14
|
+
*/
|
|
15
|
+
function get() {
|
|
16
|
+
recordDependency(state);
|
|
17
|
+
return state.value;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Setter for the state value.
|
|
21
|
+
* Accepts a new value or an updater function.
|
|
22
|
+
* Notifies subscribers only if the new value is different (Object.is).
|
|
23
|
+
*/
|
|
24
|
+
function set(next) {
|
|
25
|
+
const newValue = typeof next === "function"
|
|
26
|
+
? next(state.value)
|
|
27
|
+
: next;
|
|
28
|
+
if (Object.is(newValue, state.value))
|
|
29
|
+
return;
|
|
30
|
+
state.value = newValue;
|
|
31
|
+
notifySubscribers(state);
|
|
32
|
+
}
|
|
33
|
+
return [get, set];
|
|
34
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates a global store with reactive properties.
|
|
3
|
+
*
|
|
4
|
+
* @param initialState Initial state object
|
|
5
|
+
* @returns A tuple [store, actions]:
|
|
6
|
+
* - store: Proxy object with reactive getters for each state property
|
|
7
|
+
* - actions:
|
|
8
|
+
* - setState: apply a partial patch or updater function
|
|
9
|
+
* - reset: revert to initial state
|
|
10
|
+
*/
|
|
11
|
+
export declare function useStore<T extends object>(initialState: T): [
|
|
12
|
+
store: {
|
|
13
|
+
readonly [K in keyof T]: T[K];
|
|
14
|
+
},
|
|
15
|
+
actions: {
|
|
16
|
+
setState: (patch: Partial<T> | ((state: T) => T)) => void;
|
|
17
|
+
reset: () => void;
|
|
18
|
+
}
|
|
19
|
+
];
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { useState } from "./useState";
|
|
2
|
+
/**
|
|
3
|
+
* Creates a global store with reactive properties.
|
|
4
|
+
*
|
|
5
|
+
* @param initialState Initial state object
|
|
6
|
+
* @returns A tuple [store, actions]:
|
|
7
|
+
* - store: Proxy object with reactive getters for each state property
|
|
8
|
+
* - actions:
|
|
9
|
+
* - setState: apply a partial patch or updater function
|
|
10
|
+
* - reset: revert to initial state
|
|
11
|
+
*/
|
|
12
|
+
export function useStore(initialState) {
|
|
13
|
+
// Create individual signals for each key
|
|
14
|
+
const signals = {};
|
|
15
|
+
// Initialize signals
|
|
16
|
+
Object.keys(initialState).forEach((key) => {
|
|
17
|
+
const [getter, setter] = useState(initialState[key]);
|
|
18
|
+
signals[key] = [getter, setter];
|
|
19
|
+
});
|
|
20
|
+
// Proxy to expose reactive getters
|
|
21
|
+
const store = new Proxy({}, {
|
|
22
|
+
get(_, prop) {
|
|
23
|
+
if (prop in signals) {
|
|
24
|
+
const getter = signals[prop][0];
|
|
25
|
+
return getter();
|
|
26
|
+
}
|
|
27
|
+
return undefined;
|
|
28
|
+
},
|
|
29
|
+
set() {
|
|
30
|
+
throw new Error("Direct mutation of store is not allowed. Use actions.setState.");
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
// Actions
|
|
34
|
+
const setState = (patch) => {
|
|
35
|
+
const current = {};
|
|
36
|
+
Object.keys(signals).forEach((key) => {
|
|
37
|
+
current[key] = signals[key][0]();
|
|
38
|
+
});
|
|
39
|
+
const nextState = typeof patch === "function" ? patch(current) : patch;
|
|
40
|
+
Object.entries(nextState).forEach(([key, value]) => {
|
|
41
|
+
if (key in signals) {
|
|
42
|
+
signals[key][1](value);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
const reset = () => {
|
|
47
|
+
Object.keys(initialState).forEach((key) => {
|
|
48
|
+
const setter = signals[key][1];
|
|
49
|
+
setter(initialState[key]);
|
|
50
|
+
});
|
|
51
|
+
};
|
|
52
|
+
return [store, { setState, reset }];
|
|
53
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Watches a reactive getter and calls callback with (newValue, oldValue) when it changes.
|
|
3
|
+
*
|
|
4
|
+
* @param getter Function that returns the value to watch (reads reactive signals).
|
|
5
|
+
* @param callback Function called when the watched value changes.
|
|
6
|
+
* @returns Teardown function to cancel the watcher.
|
|
7
|
+
*/
|
|
8
|
+
export declare function useWatch<T>(getter: () => T, callback: (value: T, prev: T | undefined) => void): () => void;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { track } from "./track";
|
|
2
|
+
/**
|
|
3
|
+
* Watches a reactive getter and calls callback with (newValue, oldValue) when it changes.
|
|
4
|
+
*
|
|
5
|
+
* @param getter Function that returns the value to watch (reads reactive signals).
|
|
6
|
+
* @param callback Function called when the watched value changes.
|
|
7
|
+
* @returns Teardown function to cancel the watcher.
|
|
8
|
+
*/
|
|
9
|
+
export function useWatch(getter, callback) {
|
|
10
|
+
// Get initial value without registering dependencies
|
|
11
|
+
let oldValue = getter();
|
|
12
|
+
// Subscriber function for track
|
|
13
|
+
const subscriber = () => {
|
|
14
|
+
const newValue = getter();
|
|
15
|
+
if (newValue !== oldValue) {
|
|
16
|
+
callback(newValue, oldValue);
|
|
17
|
+
oldValue = newValue;
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
// Track dependencies and return teardown for unsubscription
|
|
21
|
+
const teardown = track(subscriber, subscriber);
|
|
22
|
+
return teardown;
|
|
23
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function sanitize(value: any): string;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import {
|
|
2
|
+
sbCollectStream,
|
|
3
|
+
sbDeserializeState,
|
|
4
|
+
sbHydrate,
|
|
5
|
+
sbHydrateIslands,
|
|
6
|
+
sbHydrateProgressively,
|
|
7
|
+
sbIsland,
|
|
8
|
+
sbRenderToDocument,
|
|
9
|
+
sbRenderToReadableStream,
|
|
10
|
+
sbRenderToStream,
|
|
11
|
+
sbRenderToString,
|
|
12
|
+
sbRenderToSuspenseStream,
|
|
13
|
+
sbResetSSRState,
|
|
14
|
+
sbSerializeState,
|
|
15
|
+
sbSsrSuspense,
|
|
16
|
+
sbSuspenseSwapScript
|
|
17
|
+
} from "./chunk-VM4QMKVK.js";
|
|
18
|
+
import "./chunk-MLKGABMK.js";
|
|
19
|
+
export {
|
|
20
|
+
sbCollectStream,
|
|
21
|
+
sbDeserializeState,
|
|
22
|
+
sbHydrate,
|
|
23
|
+
sbHydrateIslands,
|
|
24
|
+
sbHydrateProgressively,
|
|
25
|
+
sbIsland,
|
|
26
|
+
sbRenderToDocument,
|
|
27
|
+
sbRenderToReadableStream,
|
|
28
|
+
sbRenderToStream,
|
|
29
|
+
sbRenderToString,
|
|
30
|
+
sbRenderToSuspenseStream,
|
|
31
|
+
sbResetSSRState,
|
|
32
|
+
sbSerializeState,
|
|
33
|
+
sbSsrSuspense,
|
|
34
|
+
sbSuspenseSwapScript
|
|
35
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import {
|
|
2
|
+
collectStream,
|
|
3
|
+
deserializeState,
|
|
4
|
+
hydrate,
|
|
5
|
+
hydrateIslands,
|
|
6
|
+
island,
|
|
7
|
+
renderToDocument,
|
|
8
|
+
renderToStream,
|
|
9
|
+
renderToString,
|
|
10
|
+
serializeState
|
|
11
|
+
} from "./chunk-5G67D3IZ.js";
|
|
12
|
+
export {
|
|
13
|
+
collectStream,
|
|
14
|
+
deserializeState,
|
|
15
|
+
hydrate,
|
|
16
|
+
hydrateIslands,
|
|
17
|
+
island,
|
|
18
|
+
renderToDocument,
|
|
19
|
+
renderToStream,
|
|
20
|
+
renderToString,
|
|
21
|
+
serializeState
|
|
22
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import {
|
|
2
|
+
collectStream,
|
|
3
|
+
deserializeState,
|
|
4
|
+
hydrate,
|
|
5
|
+
hydrateIslands,
|
|
6
|
+
hydrateProgressively,
|
|
7
|
+
island,
|
|
8
|
+
renderToDocument,
|
|
9
|
+
renderToReadableStream,
|
|
10
|
+
renderToStream,
|
|
11
|
+
renderToString,
|
|
12
|
+
renderToSuspenseStream,
|
|
13
|
+
resetSSRState,
|
|
14
|
+
serializeState,
|
|
15
|
+
ssrSuspense,
|
|
16
|
+
suspenseSwapScript
|
|
17
|
+
} from "./chunk-7UASYN3G.js";
|
|
18
|
+
import "./chunk-MLKGABMK.js";
|
|
19
|
+
export {
|
|
20
|
+
collectStream,
|
|
21
|
+
deserializeState,
|
|
22
|
+
hydrate,
|
|
23
|
+
hydrateIslands,
|
|
24
|
+
hydrateProgressively,
|
|
25
|
+
island,
|
|
26
|
+
renderToDocument,
|
|
27
|
+
renderToReadableStream,
|
|
28
|
+
renderToStream,
|
|
29
|
+
renderToString,
|
|
30
|
+
renderToSuspenseStream,
|
|
31
|
+
resetSSRState,
|
|
32
|
+
serializeState,
|
|
33
|
+
ssrSuspense,
|
|
34
|
+
suspenseSwapScript
|
|
35
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import {
|
|
2
|
+
collectStream,
|
|
3
|
+
deserializeState,
|
|
4
|
+
hydrate,
|
|
5
|
+
hydrateIslands,
|
|
6
|
+
hydrateProgressively,
|
|
7
|
+
island,
|
|
8
|
+
renderToDocument,
|
|
9
|
+
renderToReadableStream,
|
|
10
|
+
renderToStream,
|
|
11
|
+
renderToString,
|
|
12
|
+
renderToSuspenseStream,
|
|
13
|
+
resetSSRState,
|
|
14
|
+
serializeState,
|
|
15
|
+
ssrSuspense,
|
|
16
|
+
suspenseSwapScript
|
|
17
|
+
} from "./chunk-KP2DZH5Q.js";
|
|
18
|
+
import "./chunk-MLKGABMK.js";
|
|
19
|
+
export {
|
|
20
|
+
collectStream,
|
|
21
|
+
deserializeState,
|
|
22
|
+
hydrate,
|
|
23
|
+
hydrateIslands,
|
|
24
|
+
hydrateProgressively,
|
|
25
|
+
island,
|
|
26
|
+
renderToDocument,
|
|
27
|
+
renderToReadableStream,
|
|
28
|
+
renderToStream,
|
|
29
|
+
renderToString,
|
|
30
|
+
renderToSuspenseStream,
|
|
31
|
+
resetSSRState,
|
|
32
|
+
serializeState,
|
|
33
|
+
ssrSuspense,
|
|
34
|
+
suspenseSwapScript
|
|
35
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import {
|
|
2
|
+
island,
|
|
3
|
+
sbCollectStream,
|
|
4
|
+
sbDeserializeState,
|
|
5
|
+
sbHydrate,
|
|
6
|
+
sbHydrateIslands,
|
|
7
|
+
sbHydrateProgressively,
|
|
8
|
+
sbRenderToDocument,
|
|
9
|
+
sbRenderToReadableStream,
|
|
10
|
+
sbRenderToStream,
|
|
11
|
+
sbRenderToString,
|
|
12
|
+
sbRenderToSuspenseStream,
|
|
13
|
+
sbResetSSRState,
|
|
14
|
+
sbSerializeState,
|
|
15
|
+
sbSsrSuspense,
|
|
16
|
+
sbSuspenseSwapScript
|
|
17
|
+
} from "./chunk-XKVFQTJJ.js";
|
|
18
|
+
import "./chunk-MLKGABMK.js";
|
|
19
|
+
export {
|
|
20
|
+
island,
|
|
21
|
+
sbCollectStream,
|
|
22
|
+
sbDeserializeState,
|
|
23
|
+
sbHydrate,
|
|
24
|
+
sbHydrateIslands,
|
|
25
|
+
sbHydrateProgressively,
|
|
26
|
+
sbRenderToDocument,
|
|
27
|
+
sbRenderToReadableStream,
|
|
28
|
+
sbRenderToStream,
|
|
29
|
+
sbRenderToString,
|
|
30
|
+
sbRenderToSuspenseStream,
|
|
31
|
+
sbResetSSRState,
|
|
32
|
+
sbSerializeState,
|
|
33
|
+
sbSsrSuspense,
|
|
34
|
+
sbSuspenseSwapScript
|
|
35
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import {
|
|
2
|
+
collectStream,
|
|
3
|
+
deserializeState,
|
|
4
|
+
hydrate,
|
|
5
|
+
hydrateIslands,
|
|
6
|
+
hydrateProgressively,
|
|
7
|
+
island,
|
|
8
|
+
renderToDocument,
|
|
9
|
+
renderToReadableStream,
|
|
10
|
+
renderToStream,
|
|
11
|
+
renderToString,
|
|
12
|
+
renderToSuspenseStream,
|
|
13
|
+
resetSSRState,
|
|
14
|
+
serializeState,
|
|
15
|
+
ssrSuspense,
|
|
16
|
+
suspenseSwapScript
|
|
17
|
+
} from "./chunk-3IVI3J54.js";
|
|
18
|
+
import "./chunk-MLKGABMK.js";
|
|
19
|
+
export {
|
|
20
|
+
collectStream,
|
|
21
|
+
deserializeState,
|
|
22
|
+
hydrate,
|
|
23
|
+
hydrateIslands,
|
|
24
|
+
hydrateProgressively,
|
|
25
|
+
island,
|
|
26
|
+
renderToDocument,
|
|
27
|
+
renderToReadableStream,
|
|
28
|
+
renderToStream,
|
|
29
|
+
renderToString,
|
|
30
|
+
renderToSuspenseStream,
|
|
31
|
+
resetSSRState,
|
|
32
|
+
serializeState,
|
|
33
|
+
ssrSuspense,
|
|
34
|
+
suspenseSwapScript
|
|
35
|
+
};
|