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,416 @@
|
|
|
1
|
+
declare const Priority: {
|
|
2
|
+
readonly IMMEDIATE: 0;
|
|
3
|
+
readonly USER_BLOCKING: 1;
|
|
4
|
+
readonly NORMAL: 2;
|
|
5
|
+
readonly LOW: 3;
|
|
6
|
+
readonly IDLE: 4;
|
|
7
|
+
};
|
|
8
|
+
type PriorityLevel = (typeof Priority)[keyof typeof Priority];
|
|
9
|
+
/**
|
|
10
|
+
* Schedule an update with a given priority level.
|
|
11
|
+
* Returns a cancel function.
|
|
12
|
+
*/
|
|
13
|
+
declare function scheduleUpdate(priority: PriorityLevel, callback: () => void): () => void;
|
|
14
|
+
/**
|
|
15
|
+
* Flush all pending tasks synchronously (useful for testing).
|
|
16
|
+
*/
|
|
17
|
+
declare function flushScheduler(): void;
|
|
18
|
+
/**
|
|
19
|
+
* Get the number of pending tasks.
|
|
20
|
+
*/
|
|
21
|
+
declare function pendingTasks(): number;
|
|
22
|
+
/**
|
|
23
|
+
* Yield control back to the main thread, allowing the browser to process
|
|
24
|
+
* user input, rendering, and other high-priority work.
|
|
25
|
+
*
|
|
26
|
+
* Uses `scheduler.yield()` when available (Chrome 115+),
|
|
27
|
+
* falls back to `setTimeout(0)`.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```ts
|
|
31
|
+
* for (let i = 0; i < items.length; i++) {
|
|
32
|
+
* renderItem(items[i]);
|
|
33
|
+
* if (i % 50 === 0) await yieldToMain();
|
|
34
|
+
* }
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
declare function yieldToMain(): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* Process an array in chunks, yielding to the main thread between chunks.
|
|
40
|
+
* Prevents long-running loops from blocking the UI.
|
|
41
|
+
*
|
|
42
|
+
* @param items Array of items to process
|
|
43
|
+
* @param processor Callback invoked for each item
|
|
44
|
+
* @param chunkSize Number of items per chunk before yielding (default: 50)
|
|
45
|
+
*/
|
|
46
|
+
declare function processInChunks<T>(items: T[], processor: (item: T, index: number) => void, chunkSize?: number): Promise<void>;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Mark a state update as non-urgent.
|
|
50
|
+
* The callback is scheduled at NORMAL priority so it won't block
|
|
51
|
+
* high-priority work like user input handling.
|
|
52
|
+
*/
|
|
53
|
+
declare function startTransition(callback: () => void): void;
|
|
54
|
+
/**
|
|
55
|
+
* Returns a deferred getter for a reactive value.
|
|
56
|
+
* The deferred value mirrors the source but updates at LOW priority,
|
|
57
|
+
* allowing the UI to remain responsive while expensive derived state
|
|
58
|
+
* catches up.
|
|
59
|
+
*/
|
|
60
|
+
declare function deferredValue<T>(getter: () => T): () => T;
|
|
61
|
+
/**
|
|
62
|
+
* Provides a `startTransition` wrapper paired with a reactive
|
|
63
|
+
* `isPending` flag that is `true` while the transition is in flight.
|
|
64
|
+
*
|
|
65
|
+
* Usage:
|
|
66
|
+
* const [isPending, startTransition] = transitionState();
|
|
67
|
+
* startTransition(() => { setSomeState(newValue); });
|
|
68
|
+
* if (isPending()) { // show spinner }
|
|
69
|
+
*/
|
|
70
|
+
declare function transitionState(): [isPending: () => boolean, startTransition: (cb: () => void) => void];
|
|
71
|
+
/**
|
|
72
|
+
* Reset the ID counter. Call at the start of each SSR request
|
|
73
|
+
* to ensure server and client produce matching IDs.
|
|
74
|
+
*/
|
|
75
|
+
declare function resetIdCounter(): void;
|
|
76
|
+
/**
|
|
77
|
+
* Set a custom prefix for generated IDs.
|
|
78
|
+
* Useful when multiple SibuJS apps coexist on the same page.
|
|
79
|
+
*/
|
|
80
|
+
declare function setIdPrefix(prefix: string): void;
|
|
81
|
+
/**
|
|
82
|
+
* Generate a unique, stable ID for use in accessibility attributes.
|
|
83
|
+
* SSR-compatible: call resetIdCounter() at the start of each SSR render
|
|
84
|
+
* to ensure server and client produce matching IDs.
|
|
85
|
+
*
|
|
86
|
+
* @param suffix Optional suffix appended to the generated ID
|
|
87
|
+
* @returns A unique ID string like "sibu-0", "sibu-1-label"
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* ```ts
|
|
91
|
+
* const id = id();
|
|
92
|
+
* label({ htmlFor: id, nodes: "Name" });
|
|
93
|
+
* input({ id, type: "text" });
|
|
94
|
+
* ```
|
|
95
|
+
*/
|
|
96
|
+
declare function uniqueId(suffix?: string): string;
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* DOMPool manages a pool of reusable DOM elements to reduce GC pressure.
|
|
100
|
+
*/
|
|
101
|
+
declare class DOMPool {
|
|
102
|
+
private pools;
|
|
103
|
+
private maxSize;
|
|
104
|
+
constructor(maxSize?: number);
|
|
105
|
+
/**
|
|
106
|
+
* Get a recycled element or create a new one.
|
|
107
|
+
*/
|
|
108
|
+
acquire(tag: string): HTMLElement;
|
|
109
|
+
/**
|
|
110
|
+
* Return an element to the pool for reuse.
|
|
111
|
+
* Clears attributes, children, and event listeners.
|
|
112
|
+
*/
|
|
113
|
+
release(element: HTMLElement): void;
|
|
114
|
+
/**
|
|
115
|
+
* Clear all pools.
|
|
116
|
+
*/
|
|
117
|
+
clear(): void;
|
|
118
|
+
/**
|
|
119
|
+
* Get pool statistics.
|
|
120
|
+
*/
|
|
121
|
+
stats(): Record<string, number>;
|
|
122
|
+
}
|
|
123
|
+
/** Default global pool instance */
|
|
124
|
+
declare const domPool: DOMPool;
|
|
125
|
+
/**
|
|
126
|
+
* Preloads a resource (script, style, or generic fetch).
|
|
127
|
+
*/
|
|
128
|
+
declare function preloadResource(url: string, type?: "script" | "style" | "fetch" | "image"): void;
|
|
129
|
+
/**
|
|
130
|
+
* Prefetches a URL for future navigation.
|
|
131
|
+
*/
|
|
132
|
+
declare function prefetch(url: string): void;
|
|
133
|
+
/**
|
|
134
|
+
* Preloads an image and returns a promise that resolves when loaded.
|
|
135
|
+
*/
|
|
136
|
+
declare function preloadImage(src: string): Promise<HTMLImageElement>;
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Bundle size optimization utilities for SibuJS.
|
|
140
|
+
* Provides markers and utilities for tree-shaking and dead code elimination.
|
|
141
|
+
*/
|
|
142
|
+
/**
|
|
143
|
+
* Mark a function as pure for tree-shaking.
|
|
144
|
+
* Bundlers (Rollup, esbuild, webpack) use this to eliminate unused code.
|
|
145
|
+
* Wraps a factory function with the PURE annotation.
|
|
146
|
+
*/
|
|
147
|
+
declare function pure<T>(fn: () => T): T;
|
|
148
|
+
/**
|
|
149
|
+
* Conditional import helper for tree-shaking.
|
|
150
|
+
* Only includes the module in the bundle if the condition is true.
|
|
151
|
+
* In production builds, dead branches are eliminated.
|
|
152
|
+
*/
|
|
153
|
+
declare function conditional<T>(condition: boolean, loader: () => T): T | undefined;
|
|
154
|
+
/**
|
|
155
|
+
* Feature flag helper for dead code elimination.
|
|
156
|
+
* Bundlers can statically replace these with true/false to eliminate dead code.
|
|
157
|
+
*/
|
|
158
|
+
declare const Features: {
|
|
159
|
+
readonly SSR: boolean;
|
|
160
|
+
readonly DEV: boolean;
|
|
161
|
+
readonly BROWSER: boolean;
|
|
162
|
+
};
|
|
163
|
+
/**
|
|
164
|
+
* Development-only code block. Eliminated in production builds
|
|
165
|
+
* when process.env.NODE_ENV is set to 'production'.
|
|
166
|
+
*/
|
|
167
|
+
declare function devOnly(fn: () => void): void;
|
|
168
|
+
/**
|
|
169
|
+
* Marks an export as having no side effects.
|
|
170
|
+
* Used by module-level sideEffects annotation.
|
|
171
|
+
*/
|
|
172
|
+
declare function noSideEffect<T extends (...args: unknown[]) => unknown>(fn: T): T;
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Compiled optimizations for SibuJS.
|
|
176
|
+
* Provides markers and utilities for Svelte-style compile-time optimizations.
|
|
177
|
+
* These are hints for build tools and static analyzers.
|
|
178
|
+
*/
|
|
179
|
+
/**
|
|
180
|
+
* Marks a component's template as static (no reactive bindings).
|
|
181
|
+
* A build tool can pre-render this to a static HTML string and
|
|
182
|
+
* skip reactive setup entirely.
|
|
183
|
+
*/
|
|
184
|
+
declare function staticTemplate(html: string): HTMLElement;
|
|
185
|
+
/**
|
|
186
|
+
* Clone a static template for efficient repeated rendering.
|
|
187
|
+
* Uses template.content.cloneNode(true) which is faster than createElement.
|
|
188
|
+
*/
|
|
189
|
+
declare function cloneTemplate(template: HTMLTemplateElement): DocumentFragment;
|
|
190
|
+
/**
|
|
191
|
+
* Pre-compile a component factory.
|
|
192
|
+
* Caches the template and only applies dynamic bindings on each call.
|
|
193
|
+
*/
|
|
194
|
+
declare function precompile<Props>(templateHtml: string, hydrate: (el: HTMLElement, props: Props) => void): (props: Props) => HTMLElement;
|
|
195
|
+
/**
|
|
196
|
+
* Marker for static expressions that can be hoisted out of reactive scopes.
|
|
197
|
+
* A compiler pass would extract these to module scope.
|
|
198
|
+
*/
|
|
199
|
+
declare function hoistable<T>(value: T): T;
|
|
200
|
+
/**
|
|
201
|
+
* Marks a block of DOM creation as having a known, fixed structure.
|
|
202
|
+
* Enables block-level optimization where the compiler can generate
|
|
203
|
+
* optimized creation and patching code.
|
|
204
|
+
*/
|
|
205
|
+
declare function block(factory: () => HTMLElement): HTMLElement;
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* Schema definition for entity normalization.
|
|
209
|
+
* Describes the shape of an entity type and its relationships.
|
|
210
|
+
*/
|
|
211
|
+
interface NormalizedSchema {
|
|
212
|
+
/** Name of the entity type (e.g. "user", "post") */
|
|
213
|
+
name: string;
|
|
214
|
+
/** Key used as the unique identifier. Defaults to "id" */
|
|
215
|
+
idKey?: string;
|
|
216
|
+
/** Map of relation field names to their entity type names */
|
|
217
|
+
relations?: Record<string, string>;
|
|
218
|
+
}
|
|
219
|
+
/** Internal normalized state shape, following the ids + entities pattern */
|
|
220
|
+
interface NormalizedState<T> {
|
|
221
|
+
ids: string[];
|
|
222
|
+
entities: Record<string, T>;
|
|
223
|
+
}
|
|
224
|
+
/** Actions returned by normalizedStore */
|
|
225
|
+
interface NormalizedStoreActions<T> {
|
|
226
|
+
/** Add a single entity to the store */
|
|
227
|
+
add(entity: T): void;
|
|
228
|
+
/** Add multiple entities to the store */
|
|
229
|
+
addMany(entities: T[]): void;
|
|
230
|
+
/** Get an entity by its id, or undefined if not found */
|
|
231
|
+
get(id: string): T | undefined;
|
|
232
|
+
/** Get all entities as an array */
|
|
233
|
+
getAll(): T[];
|
|
234
|
+
/** Update an entity by merging a partial object */
|
|
235
|
+
update(id: string, partial: Partial<T>): void;
|
|
236
|
+
/** Remove an entity by id */
|
|
237
|
+
remove(id: string): void;
|
|
238
|
+
/** Query entities matching a predicate */
|
|
239
|
+
select(predicate: (entity: T) => boolean): T[];
|
|
240
|
+
/** Get the raw normalized state (reactive getter) */
|
|
241
|
+
getState(): NormalizedState<T>;
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* normalizedStore creates a reactive normalized store for a single
|
|
245
|
+
* entity type. Internal storage uses the `{ ids, entities }` pattern
|
|
246
|
+
* (like Redux Toolkit's entity adapter) backed by signal for reactivity.
|
|
247
|
+
*
|
|
248
|
+
* @param schema Schema describing the entity type
|
|
249
|
+
* @returns Store actions for CRUD and query operations
|
|
250
|
+
*
|
|
251
|
+
* @example
|
|
252
|
+
* ```ts
|
|
253
|
+
* const users = normalizedStore<User>({ name: "user" });
|
|
254
|
+
*
|
|
255
|
+
* users.add({ id: "1", name: "Alice" });
|
|
256
|
+
* users.addMany([
|
|
257
|
+
* { id: "2", name: "Bob" },
|
|
258
|
+
* { id: "3", name: "Charlie" },
|
|
259
|
+
* ]);
|
|
260
|
+
*
|
|
261
|
+
* const alice = users.get("1"); // { id: "1", name: "Alice" }
|
|
262
|
+
* const all = users.getAll(); // [Alice, Bob, Charlie]
|
|
263
|
+
* users.update("1", { name: "Alicia" });
|
|
264
|
+
* users.remove("3");
|
|
265
|
+
* const bobs = users.select(u => u.name.startsWith("B"));
|
|
266
|
+
* ```
|
|
267
|
+
*/
|
|
268
|
+
declare function normalizedStore<T extends Record<string, unknown>>(schema: NormalizedSchema): NormalizedStoreActions<T>;
|
|
269
|
+
/** A map of entity type names to their flat entity tables */
|
|
270
|
+
type NormalizedEntities = Record<string, Record<string, unknown>>;
|
|
271
|
+
/** Result of normalizing nested data */
|
|
272
|
+
interface NormalizeResult {
|
|
273
|
+
/** The top-level id (or array of ids) of the normalized data */
|
|
274
|
+
result: string | string[];
|
|
275
|
+
/** All extracted entities keyed by type name, then by id */
|
|
276
|
+
entities: NormalizedEntities;
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* normalize takes a nested data object (or array) and flattens it into
|
|
280
|
+
* a normalized entities map according to the provided schema.
|
|
281
|
+
*
|
|
282
|
+
* Relations defined in the schema are recursively extracted and replaced
|
|
283
|
+
* with their id references.
|
|
284
|
+
*
|
|
285
|
+
* @param data The nested data to normalize (single object or array)
|
|
286
|
+
* @param schema The schema describing entity shape and relations
|
|
287
|
+
* @returns A NormalizeResult with the top-level id(s) and all entities
|
|
288
|
+
*
|
|
289
|
+
* @example
|
|
290
|
+
* ```ts
|
|
291
|
+
* const postSchema: NormalizedSchema = {
|
|
292
|
+
* name: "post",
|
|
293
|
+
* relations: { author: "user", comments: "comment" },
|
|
294
|
+
* };
|
|
295
|
+
*
|
|
296
|
+
* const data = {
|
|
297
|
+
* id: "p1",
|
|
298
|
+
* title: "Hello",
|
|
299
|
+
* author: { id: "u1", name: "Alice" },
|
|
300
|
+
* comments: [
|
|
301
|
+
* { id: "c1", text: "Great!" },
|
|
302
|
+
* { id: "c2", text: "Thanks" },
|
|
303
|
+
* ],
|
|
304
|
+
* };
|
|
305
|
+
*
|
|
306
|
+
* const { result, entities } = normalize(data, postSchema);
|
|
307
|
+
* // result === "p1"
|
|
308
|
+
* // entities.post["p1"] === { id: "p1", title: "Hello", author: "u1", comments: ["c1", "c2"] }
|
|
309
|
+
* // entities.user["u1"] === { id: "u1", name: "Alice" }
|
|
310
|
+
* // entities.comment["c1"] === { id: "c1", text: "Great!" }
|
|
311
|
+
* ```
|
|
312
|
+
*/
|
|
313
|
+
declare function normalize<T extends Record<string, unknown>>(data: T | T[], schema: NormalizedSchema): NormalizeResult;
|
|
314
|
+
/**
|
|
315
|
+
* denormalize reconstructs a nested object from a flat normalized entities
|
|
316
|
+
* map, resolving relation references back to their full objects.
|
|
317
|
+
*
|
|
318
|
+
* @param id The id of the root entity to reconstruct
|
|
319
|
+
* @param entities The flat entities map (from normalize or manual construction)
|
|
320
|
+
* @param schema The schema describing entity shape and relations
|
|
321
|
+
* @returns The fully reconstructed nested object, or undefined if not found
|
|
322
|
+
*
|
|
323
|
+
* @example
|
|
324
|
+
* ```ts
|
|
325
|
+
* const post = denormalize("p1", entities, postSchema);
|
|
326
|
+
* // post.author is the full user object, not just "u1"
|
|
327
|
+
* // post.comments is an array of full comment objects
|
|
328
|
+
* ```
|
|
329
|
+
*/
|
|
330
|
+
declare function denormalize<T extends Record<string, unknown>>(id: string, entities: NormalizedEntities, schema: NormalizedSchema): T | undefined;
|
|
331
|
+
|
|
332
|
+
/**
|
|
333
|
+
* Advanced runtime chunk loading with caching strategies for SibuJS.
|
|
334
|
+
* Provides configurable caching, preloading, retry logic, and loading orchestration.
|
|
335
|
+
*/
|
|
336
|
+
interface ChunkConfig {
|
|
337
|
+
/** Maximum number of cached chunks */
|
|
338
|
+
maxCacheSize?: number;
|
|
339
|
+
/** Cache TTL in milliseconds (0 = no expiry) */
|
|
340
|
+
cacheTTL?: number;
|
|
341
|
+
/** Number of retry attempts on failure */
|
|
342
|
+
retries?: number;
|
|
343
|
+
/** Delay between retries in ms */
|
|
344
|
+
retryDelay?: number;
|
|
345
|
+
/** Timeout for chunk loading in ms */
|
|
346
|
+
timeout?: number;
|
|
347
|
+
/** Called when a chunk starts loading */
|
|
348
|
+
onLoadStart?: (id: string) => void;
|
|
349
|
+
/** Called when a chunk finishes loading */
|
|
350
|
+
onLoadEnd?: (id: string) => void;
|
|
351
|
+
/** Called when a chunk fails to load */
|
|
352
|
+
onLoadError?: (id: string, error: Error) => void;
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* Central registry for managing dynamic chunks with caching and lifecycle callbacks.
|
|
356
|
+
*/
|
|
357
|
+
declare function createChunkRegistry(config?: ChunkConfig): {
|
|
358
|
+
/**
|
|
359
|
+
* Load a chunk by ID. Uses cache if available, otherwise loads via the provided loader.
|
|
360
|
+
*/
|
|
361
|
+
load<T>(id: string, loader: () => Promise<T>): Promise<T>;
|
|
362
|
+
/**
|
|
363
|
+
* Preload a chunk without blocking. Silently caches for later use.
|
|
364
|
+
*/
|
|
365
|
+
preload<T>(id: string, loader: () => Promise<T>): void;
|
|
366
|
+
/**
|
|
367
|
+
* Preload multiple chunks in parallel.
|
|
368
|
+
*/
|
|
369
|
+
preloadAll(entries: Array<{
|
|
370
|
+
id: string;
|
|
371
|
+
loader: () => Promise<unknown>;
|
|
372
|
+
}>): void;
|
|
373
|
+
/**
|
|
374
|
+
* Check if a chunk is cached and valid.
|
|
375
|
+
*/
|
|
376
|
+
has(id: string): boolean;
|
|
377
|
+
/**
|
|
378
|
+
* Get a cached chunk synchronously. Returns undefined if not cached.
|
|
379
|
+
*/
|
|
380
|
+
get<T>(id: string): T | undefined;
|
|
381
|
+
/**
|
|
382
|
+
* Invalidate a cached chunk.
|
|
383
|
+
*/
|
|
384
|
+
invalidate(id: string): void;
|
|
385
|
+
/**
|
|
386
|
+
* Clear all cached chunks.
|
|
387
|
+
*/
|
|
388
|
+
clear(): void;
|
|
389
|
+
/**
|
|
390
|
+
* Get cache statistics.
|
|
391
|
+
*/
|
|
392
|
+
stats(): {
|
|
393
|
+
size: number;
|
|
394
|
+
maxSize: number;
|
|
395
|
+
pending: number;
|
|
396
|
+
preloaded: number;
|
|
397
|
+
};
|
|
398
|
+
};
|
|
399
|
+
/**
|
|
400
|
+
* Create a lazy-loaded component that uses the chunk registry for caching.
|
|
401
|
+
* Provides automatic retry, timeout, and cache management.
|
|
402
|
+
*/
|
|
403
|
+
declare function lazyChunk(id: string, loader: () => Promise<{
|
|
404
|
+
default: () => HTMLElement;
|
|
405
|
+
} | (() => HTMLElement)>, registry: ReturnType<typeof createChunkRegistry>, fallback?: () => HTMLElement): () => HTMLElement;
|
|
406
|
+
/**
|
|
407
|
+
* Preload ES modules using link[rel=modulepreload].
|
|
408
|
+
* Improves loading performance by informing the browser early.
|
|
409
|
+
*/
|
|
410
|
+
declare function preloadModule(url: string): void;
|
|
411
|
+
/**
|
|
412
|
+
* Preload multiple modules.
|
|
413
|
+
*/
|
|
414
|
+
declare function preloadModules(urls: string[]): void;
|
|
415
|
+
|
|
416
|
+
export { type ChunkConfig, DOMPool, Features, type NormalizeResult, type NormalizedEntities, type NormalizedSchema, type NormalizedState, type NormalizedStoreActions, Priority, type PriorityLevel, block, cloneTemplate, conditional, createChunkRegistry, deferredValue, denormalize, devOnly, domPool, flushScheduler, hoistable, lazyChunk, noSideEffect, normalize, normalizedStore, pendingTasks, precompile, prefetch, preloadImage, preloadModule, preloadModules, preloadResource, processInChunks, pure, resetIdCounter, scheduleUpdate, setIdPrefix, startTransition, staticTemplate, transitionState, uniqueId, yieldToMain };
|